dae-mockcli
Version:
56 lines (51 loc) • 1.1 kB
JavaScript
const childProcess = require('child_process');
const which = require('which');
const chalk = require('chalk');
/**
* 查找系统中用于安装依赖包的命令
*/
function findNpm() {
const npms = ['tnpm', 'cnpm', 'npm'];
for (let i = 0; i < npms.length; i++) {
try {
// 查找环境变量下指定的可执行文件的第一个实例
which.sync(npms[i]);
return npms[i]
} catch (e) {
}
}
throw new Error(chalk.red('请安装npm'));
}
/**
* 查找是否有弄得环境
*/
function findEnv(env) {
try {
which.sync(env);
return env
} catch (e) {
}
throw new Error(chalk.red(`请安装${env}`));
}
/**
* 开启子进程来执行命令
* @param {String} cmd 待执行的命令
* @param {Array} args 命令执行时的参数.
* @param {Function} fn 执行完成时的回调.
*/
function exec(cmd, args, fn) {
args = args || [];
const runner = childProcess.spawn(cmd, args, {
stdio: 'inherit'
});
runner.on('close', function (code) {
if (fn) {
fn(code);
}
})
}
module.exports = {
exec,
findNpm,
findEnv
};