cmd并行执行和终止

我有以下bash脚本:

node ./build.js & node ./server.js 

它创build两个nodejs进程,并行执行它们。 当我按下Ctrl-C ,两个进程都被终止。

我正在试图用Windows cmd shell来做同样的事情。 这是我目前的:

 start /B node ./build.js & node ./server.js 

它成功启动了相同的两个进程,但是在按下Ctrl-C它只能杀死第二个进程; node ./build.js保持活动,我没有简单的方法来终止它从控制台。

可悲的是PowerShell在这里不是一个选项,因为这些脚本应该作为npm脚本的一部分运行,而且它只能使用cmd作为Windows shell。

即使无法直接从节点运行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或同等的操作会终止两个子进程。

从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

NB – Windows无法识别单引号,因此脚本中的转义双引号。