@elora-cloud/elora-cli
Version:
elora build cli 前端打包脚手架
37 lines (31 loc) • 1.36 kB
JavaScript
;
var node_child_process = require('node:child_process');
var process = require('node:process');
var chalk$1 = require('chalk');
var consola = require('consola');
var paths = require('./paths.cjs');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var process__default = /*#__PURE__*/_interopDefaultCompat(process);
var consola__default = /*#__PURE__*/_interopDefaultCompat(consola);
const chalk = new chalk$1.Chalk();
async function run(command, cwd = paths.ROOT_DIR) {
return new Promise((resolve, reject) => {
const [cmd, ...args] = command.split(' ');
consola__default.default.info(`run: ${chalk.green(`${cmd} ${args.join(' ')}`)}`);
const app = node_child_process.spawn(cmd, args, {
cwd,
stdio: 'inherit',
shell: process__default.default.platform === 'win32',
});
const onProcessExit = () => app.kill('SIGHUP');
app.on('close', (code) => {
process__default.default.removeListener('exit', onProcessExit);
if (code === 0)
resolve();
else
reject(new Error(`Command failed. \n Command: ${command} \n Code: ${code}`));
});
process__default.default.on('exit', onProcessExit);
});
}
exports.run = run;