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>
31 lines (25 loc) • 839 B
JavaScript
const spawn = require('cross-spawn');
const config = require('./config');
const path = require('path');
module.exports = async function(dir, name) {
let location = await config.resolve(dir, ['yarn.lock', 'package.json']);
return new Promise((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', code => {
if (code !== 0) {
return reject(new Error(`Failed to install ${name}.`));
}
return resolve();
});
});
};