Javascript 如何自动停止后台运行的npm脚本
我使用npm脚本,我有一些应该并行运行的脚本。我有这样的想法:Javascript 如何自动停止后台运行的npm脚本,javascript,node.js,build,background,npm,Javascript,Node.js,Build,Background,Npm,我使用npm脚本,我有一些应该并行运行的脚本。我有这样的想法: ... scripts: { "a": "taskA &", "preb": "npm run a", "b": "taskB" } ... 这很好!但是我想在taskB完成后自动杀死运行后台的taskA 我该怎么做? 谢谢 我不认为npm是管理流程之间复杂关系的最佳工具 如果创建一个节点脚本,使用节点的模块来管理协同进程的启动和终止,可能会更好 话虽如此,本着总是试图提供一个直接的、有用的答案的精神 您
...
scripts: {
"a": "taskA &",
"preb": "npm run a",
"b": "taskB"
}
...
这很好!但是我想在taskB完成后自动杀死运行后台的taskA
我该怎么做?
谢谢 我不认为npm是管理流程之间复杂关系的最佳工具 如果创建一个节点脚本,使用节点的模块来管理协同进程的启动和终止,可能会更好 话虽如此,本着总是试图提供一个直接的、有用的答案的精神 您可以将您的npm脚本构造为(假设bash shell): 这里唯一的“魔力”是:
bash
shell运行命令时(这是在末尾添加&
时发生的情况),您可以使用$发现它代码>,但仅在命令运行后立即执行。(有关其说明,请参见。)
&
测试。(有关详细信息,请参阅。)npm run all
包可能就是您想要的:
$ npm install --save npm-run-all
然后在package.json
文件中:
"scripts": {
"runA": "taskA",
"runB": "taskB",
"runBoth": "npm-run-all -p runA runB"
}
(-p
并行运行它们,使用-s
进行顺序操作。)使用看起来不那么棘手和痛苦。这避免了将分离的进程(&
)放在一起。而且也承诺会更加跨平台
npm install concurrently --save
然后在package.json中
也经过测试(在Ubuntu 16.04、npm 5.6下)。谢谢你的Bash技巧!太棒了。你的答案就是我一直在寻找的答案。我认为runB没有从runA访问$TASK\u PID的权限。@prongs-好的,什么是opsys?node的哪个版本?如果我不知道您的设置,很难帮助。;)mac和所有最新的东西。基本上变量没有设置,因此kill不会发生。谢谢,这正是我想要的。如果你在结尾加上符号,它甚至会在后台运行这个脚本。(例如:
“npm运行all-p runA runB&”
)效果很好完成后,请确保使用killall节点。
:D
npm install concurrently --save
"runBoth": "concurrently \"npm run taskA\" \"npm run taskB\"",