如何在超时的情况下运行npm脚本(如果需要更长的时间,则终止进程)



我有一个Angular的npm构建脚本:

"build": "ng build my-project-name"

这个脚本经常挂起(在我们的构建管道内部和本地(。我想设置一个时间限制,在此之后进程将被终止并重新启动。我试图使用一个带有spawnspawnSync的节点脚本来运行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,则终止。

相关内容

  • 没有找到相关文章

最新更新