如何以编程方式执行'npm run'命令?

时间:2016-06-25 19:09:48

标签: javascript node.js

我有一些自定义测试脚本,我可以使用npm run test命令运行,该命令执行一些Node脚本以启动e2e / unit测试。但在此之前,我必须在其他终端窗口中使用npm run dev启动webpack dev服务器(这也是一些自定义Node脚本,细节无关紧要)。所以,我想省略npm run dev手动执行并将其移动到自定义npm run test脚本,即我想在Node脚本中以编程方式执行webpack dev服务器。如何使用Node脚本以编程方式执行npm run dev然后停止它?提前致谢!

"dev": "node node_modules/webpack-dev-server/bin/webpack-dev-server.js --host 0.0.0.0 --history-api-fallback --debug --inline --progress --config config/config.js"

4 个答案:

答案 0 :(得分:12)

您可以使用exec从脚本

运行
select created_at,extract(day from created_at),DATE_PART('day', now()),extract(day from now()),now() from be where DATE_PART('day', be.created_at) = DATE_PART('day', now())

答案 1 :(得分:7)

只需安装npm

npm install npm

然后在你的程序中:

npm.command.run('dev', (err) => { ... });

有关详情,请参阅来源。 npm.command对象是npm的非官方API。

答案 2 :(得分:1)

这是一个应该可以在所有平台上可靠运行的解决方案。它也非常简洁。将其放入 build.js,然后运行 ​​node build

const {execSync} = require('child_process')

execSync("npm run clean")
execSync("npm run minify")
execSync("npm run build_assets")

它会在 npm 异常终止时立即中止。

答案 3 :(得分:0)

使用PM2,真的非常有用和容易...

npm install pm2
const pm2 = require('pm2');

pm2.start({
    script: 'npm -- run monitorTheWeather',
    autorestart : false 
  }, (err, apps) => {
    pm2.disconnect()
    if (err) { throw err }
  })