johnny-cli
Version:
CLI for Johnny Deps
51 lines (43 loc) • 1.31 kB
JavaScript
// @flow
import _ from 'lodash';
import API from '../API';
import Dll from '../Dll';
import {logError, rebuildAndSync, spawnNpm} from 'helpers';
import JohnnyFile from '../JohnnyFile';
import R from 'ramda';
require('babel-polyfill');
export default async (packages: Array<string>, params: Object) => {
if(R.isEmpty(packages)) {
try {
process.stdout.write('\n\x1b[1mInstalling all project\'s dependencies with npm...\x1b[0m');
await spawnNpm(['install']);
process.stdout.write('\x1b[1m\x1b[32mDone\x1b[0m\n');
} catch(error) {
console.log('\n\n' + error);
return;
}
return;
}
if(params.saveDev) {
try {
process.stdout.write('\n\x1b[1mInstalling dev dependencies with npm...\x1b[0m');
await spawnNpm(['install', ...packages, '--save-dev']);
process.stdout.write('\x1b[1m\x1b[32mDone\x1b[0m\n');
} catch(error) {
console.log('\n\n' + error);
return;
}
return;
}
try {
process.stdout.write('\n\x1b[1mInstalling packages with npm...\x1b[0m');
await spawnNpm(R.filter(Boolean, ['install', ...packages, params.save ? '--save-exact' : '--no-save']));
process.stdout.write('\x1b[1m\x1b[32mDone\x1b[0m\n\n');
} catch(error) {
console.log('\n\n' + error);
return;
}
if(!params.save)
return;
await rebuildAndSync({johnnyFile: JohnnyFile()});
}