npm-update-all
Version:
Update all npm packages in dependencies & devDependecies under package.json at once
74 lines (47 loc) • 1.54 kB
JavaScript
;
var _ = require('lodash');
var fs = require('fs');
var beautify = require('prettify-js');
var exec = require('child_process').exec;
var clc = require('cli-color');
var pkg = process.cwd() + '/package.json';
var Spinner = require('cli-spinner').Spinner;
if (fs.existsSync(pkg)) {
console.log((clc.yellow.bgBlack('Package.json Located at : ') +" " +process.cwd() + '/package.json'));
console.log('--------------------------');
console.log('UPDATING npm modules......');
console.log('--------------------------');
var spinner = new Spinner('%s');
spinner.setSpinnerString('|/-\\');
spinner.start();
pkg = require(pkg);
doInstall();
}
else {
console.log(beautify({error: 'package.json not found', msg: 'navigate to project root & run command ',dir :process.cwd()}));
}
function doInstall() {
var noPackage = 0;
var devDep = 'npm i -D ';
_.forEach(pkg.devDependencies, function (value, key) {
key += '@* ';
devDep += key;
noPackage +=1;
});
var dep = 'npm i -S ';
_.forEach(pkg.dependencies, function (value, key) {
key += '@* ';
dep += key;
noPackage +=1;
});
var npmUpdate = devDep + ' && ' + dep;
exec(npmUpdate, function (err, out, stderr) {
spinner.stop();
if (err) {
console.error('exec error:' + err);
return;
}
console.log('Packages Updated : ' + noPackage);
}).stdout.pipe( process.stdout);
}