-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdateDeps.js
executable file
·38 lines (32 loc) · 1015 Bytes
/
updateDeps.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
const fs = require('fs');
const { exec } = require('child_process');
function getDeps(type) {
return new Promise((resolve, reject) => {
exec(`npm list --depth=0 --json --include=${type}`, (err, stdout, stderr) => {
if (err || stderr) {
reject(err);
}
return resolve(JSON.parse(stdout).dependencies);
});
});
}
async function updateDeps() {
try {
const devDepsList = await getDeps('dev');
const depsList = await getDeps('prod');
const file = fs.readFileSync('package.json');
const content = JSON.parse(file);
for (let devDep in content.devDependencies) {
content.devDependencies[devDep] = `^${devDepsList[devDep].version}`;
}
for (let dep in content.dependencies) {
content.dependencies[dep] = `^${depsList[dep].version}`;
}
fs.writeFileSync('package.json', `${JSON.stringify(content, null, ' ')}\n`);
console.log('Done');
} catch (error) {
console.error(error);
}
}
console.log('Updating...');
updateDeps();