exec.js 631 Bytes
Newer Older
dengxiaofeng's avatar
dengxiaofeng committed
1
const { spawn } = require('child_process');
叶飞's avatar
叶飞 committed
2
const spawnWin = require('cross-spawn');
邓晓峰's avatar
邓晓峰 committed
3

dengxiaofeng's avatar
dengxiaofeng committed
4 5
module.exports = function exec(command, args, opts) {
  return new Promise((resolve, reject) => {
叶飞's avatar
叶飞 committed
6 7
    const child =
      process.platform === 'win32'
邓晓峰's avatar
邓晓峰 committed
8 9
        ? spawnWin(command, args, { stdio: 'inherit', env: process.env, ...opts })
        : spawn(command, args, { stdio: 'inherit', env: process.env, ...opts });
dengxiaofeng's avatar
dengxiaofeng committed
10 11 12 13 14 15 16 17 18 19 20 21
    child.once('error', (err) => {
      console.log(err);
      reject(err);
    });
    child.once('close', (code) => {
      if (code === 1) {
        process.exit(1);
      } else {
        resolve();
      }
    });
  });
邓晓峰's avatar
邓晓峰 committed
22
};