@elora-cloud/elora-cli
Version:
elora build cli 前端打包脚手架
30 lines (27 loc) • 972 B
JavaScript
import { spawn } from 'node:child_process';
import process from 'node:process';
import { Chalk } from 'chalk';
import consola from 'consola';
import { ROOT_DIR } from './paths.mjs';
const chalk = new Chalk();
async function run(command, cwd = ROOT_DIR) {
return new Promise((resolve, reject) => {
const [cmd, ...args] = command.split(' ');
consola.info(`run: ${chalk.green(`${cmd} ${args.join(' ')}`)}`);
const app = spawn(cmd, args, {
cwd,
stdio: 'inherit',
shell: process.platform === 'win32',
});
const onProcessExit = () => app.kill('SIGHUP');
app.on('close', (code) => {
process.removeListener('exit', onProcessExit);
if (code === 0)
resolve();
else
reject(new Error(`Command failed. \n Command: ${command} \n Code: ${code}`));
});
process.on('exit', onProcessExit);
});
}
export { run };