我有以下bash脚本:
node ./build.js & node ./server.js
它创建两个nodejs进程并并行执行它们。当我按Ctrl-C
时,两个进程都会终止。
我尝试对Windows cmd shell执行相同的操作。这就是我目前所拥有的:
start /B node ./build.js & node ./server.js
它成功启动了相同的两个进程,但是在我按下Ctrl-C
之后它只会杀死第二个进程; node ./build.js
保持活动状态,我没有简单的方法从控制台终止它。
可悲的是,PowerShell不是一个选项,因为这些脚本应该作为npm脚本的一部分运行,并且它只能使用cmd作为Windows shell。
答案 0 :(得分:4)
即使您无法直接从节点运行PowerShell命令,只要您可以运行cmd命令,您就可以使用powershell.exe执行任何操作。实质上:
powershell -Command "Get-Item ."
现在,到实际解决方案:
powershell -Command "Start-Process -NoNewWindow node .\server1.js; Start-Process -NoNewWindow node .\server2.js"
上面的命令应该启动server1和server2,Ctrl + C或等效命令将终止两个子进程。
答案 1 :(得分:1)
从npm脚本运行多个进程的跨平台解决方案(Win,Linux,Mac)是安装parallelshell npm库。
npm install parallelshell --save-dev
然后在package.json
文件中,您可以按如下方式定义脚本:
"scripts": {
"myScript" : "parallelshell \"node ./build.js\" \"node ./server.js\""
}
执行npm run myScript
。甚至更快 - 调用脚本start
而不是myScript
并执行npm start
。
注意 - Windows无法识别单引号,因此脚本中的双引号被转义。