我有一个Angular的npm构建脚本:
"build": "ng build my-project-name"
这个脚本经常挂起(在我们的构建管道内部和本地(。我想设置一个时间限制,在此之后进程将被终止并重新启动。我试图使用一个带有spawn
或spawnSync
的节点脚本来运行npm.cmd run build
,并在返回的句柄上显式使用超时或调用.kill()
,看起来进程被终止了,但随后它的输出继续命中终端,终端不得不手动终止。
有没有任何通用的方法来运行一个在给定的时间后会被杀死的NPM脚本?
以下是我最终使用的内容。
制作一个js脚本timeout.js
,如下所示:
setTimeout(() => process.exit(1), 20000);
安装节点包concurrently
制作NPM脚本如下:
{
"build:with-timeout": "concurrently -k "node timeout.js" "npm run build""
}
当其中一个进程终止时,具有-k
标志的concurrently
将向所有其他进程发送SIGTERM
信号。在我的特定情况下,我选择按构建进程监控CPU使用情况,如果其活动在2分钟内降至接近0,则终止。