我有一些自定义测试脚本,我可以使用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"
答案 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 }
})