gpt4 book ai didi

javascript - 如何自动停止在后台运行的npm脚本

转载 作者:数据小太阳 更新时间:2023-10-29 04:03:02 30 4
gpt4 key购买 nike

我使用的是 npm 脚本,我有一些脚本应该并行运行。我有这样的东西:

...
scripts: {
"a": "taskA &",
"preb": "npm run a",
"b": "taskB"
}
...

这很好!但是我想在 taskB 完成后自动终止运行后台的 taskA。

我该怎么做?谢谢!

最佳答案

我不认为 npm 是管理进程之间复杂关系的最佳工具。

创建一个使用 Node 的 child_process 的 Node 脚本会更好。模块来管理协同进程的启动和终止,可能使用 spawn .

话虽如此,本着始终尝试提供直接、可用的答案的精神..

您可以像这样构造您的 npm 脚本(假设 bash shell):

scripts:{
runBoth: "npm runA & npm runB", // run tasks A and B in parallel
runA: "taskA & TASKA_PID=$!", // run task A and capture its PID into $TASKA_PID
runB: "taskB && kill $TASKA_PID" // run task B and if it completes successfully, kill task A using its saved PID
}

这里唯一的“魔法”是:

  1. 当您使用 bash shell 在后台运行命令时(将 & 添加到末尾时会发生这种情况),您可以使用 发现它的 PID code>$!,但仅在命令运行后立即执行。 (参见 Advanced Bash-Scripting Guide: Chapter 9. Another Look at Variables - 9.1. Internal Variables 的描述。)
  2. taskB 必须在成功时调用 process.exit(0) 或在失败时调用 process.exit(-1) 以便正确处理 && 测试。 (有关详细信息,请参阅 this answer。)

关于javascript - 如何自动停止在后台运行的npm脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808402/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com