执行命令
utilsutilslibindex.js
模块下新建两个方法
/**
* @description: 封装一个 spawn 方法,兼容 mac 和 windows
* windows : cp.spawn('cmd',['/c','node','-e',code],{})
* mac : cp.spawn('node', ['-e', code],{})
* @param {*} command 'cmd'
* @param {*} args ['/c','node','-e',code]
* @param {*} options {}
* @return {*} cp.spawn(cmd, cmdArgs, options)
*/
function spawn(command, args, options = {}) {
const cp = require('child_process');
const win32 = process.platform === 'win32';
const cmd = win32 ? 'cmd' : command;
const cmdArgs = win32 ? ['/c'].concat(command, args) : args;
return cp.spawn(cmd, cmdArgs, options);
}
/**
* @description: 异步执行命令
* @param {*} 参数同上
* @return {*}
*/
function execAsync(command, args, options = {}) {
return new Promise((resolve, reject) => {
const p = spawn(command, args, options)
p.on('error', e => {
reject(e)
})
p.on('exit', c => {
resolve(c)
})
})
}
module.exports = {
spawn,
execAsync
};
模板安装
commandsinitlibindex.js
在命令的执行阶段添加安装模板的方法。
代码语言:javascript复制/**
* @description: 命令的执行阶段
* @param {*}
* @return {*}
*/
async exec() {
try {
// 1.准备阶段
const projectInfo = await this.prepare();
if (projectInfo) {
this.projectInfo = projectInfo;
log.verbose('