parcel-bundler
Version:
<p align="center"> <a href="https://parceljs.org/" target="_blank"> <img alt="Parcel" src="https://user-images.githubusercontent.com/19409/31321658-f6aed0f2-ac3d-11e7-8100-1587e676e0ec.png" width="749"> </a> </p>
40 lines (32 loc) • 1.49 kB
JavaScript
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
const spawn = require('cross-spawn');
const config = require('./config');
const path = require('path');
module.exports = (() => {
var _ref = _asyncToGenerator(function* (dir, name) {
let location = yield config.resolve(dir, ['yarn.lock', 'package.json']);
return new Promise(function (resolve, reject) {
let install;
let options = {
cwd: location ? path.dirname(location) : dir
};
if (location && path.basename(location) === 'yarn.lock') {
install = spawn('yarn', ['add', name, '--dev'], options);
} else {
install = spawn('npm', ['install', name, '--save-dev'], options);
}
install.stdout.pipe(process.stdout);
install.stderr.pipe(process.stderr);
install.on('close', function (code) {
if (code !== 0) {
return reject(new Error(`Failed to install ${name}.`));
}
return resolve();
});
});
});
return function (_x, _x2) {
return _ref.apply(this, arguments);
};
})();
;