UNPKG

1.43 kBJavaScriptView Raw
1'use strict';
2
3var _promise = require('babel-runtime/core-js/promise');
4
5var _promise2 = _interopRequireDefault(_promise);
6
7function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
9var chalk = require('chalk');
10var execa = require('execa');
11var ora = require('ora');
12
13function install(packages, currentState) {
14 if (!packages.length) {
15 return _promise2.default.resolve(currentState);
16 }
17
18 var installer = currentState.get('installer');
19 var installGlobal = currentState.get('global') ? '--global' : null;
20 var saveExact = currentState.get('saveExact') ? '--save-exact' : null;
21 var color = chalk.supportsColor ? '--color=always' : null;
22
23 var npmArgs = ['install'].concat(installGlobal).concat(saveExact).concat(packages).concat(color).filter(Boolean);
24
25 console.log('');
26 console.log('$ ' + chalk.green(installer) + ' ' + chalk.green(npmArgs.join(' ')));
27 var spinner = ora('Installing using ' + chalk.green(installer) + '...');
28 spinner.enabled = spinner.enabled && currentState.get('spinner');
29 spinner.start();
30
31 return execa(installer, npmArgs, { cwd: currentState.get('cwd') }).then(function (output) {
32 spinner.stop();
33 console.log(output.stdout);
34 console.log(output.stderr);
35
36 return currentState;
37 }).catch(function (err) {
38 spinner.stop();
39 throw err;
40 });
41}
42
43module.exports = install;
\No newline at end of file