一次中断所有 lerna --parallel 任务

Gab*_*ron 8 unix lerna create-react-app

我有一个 lerna 脚本 ( lerna dev),它使用该--parallel选项启动多个包的开发服务器(如果我不使用该选项,则只会启动第一个服务,而不会启动其他服务)。这些服务器在不同端口上以开发模式为各自的应用程序提供服务,并带有热重载。基本上,这允许顺利开发,因为我们只需要输入一个命令即可开始处理多个包。

我注意到的问题是,当我中断此 lerna 任务时,服务器不会关闭。当我运行我的lerna dev命令时,它会打印消息,说明服务器已经在它们使用的端口上运行。这意味着,当我关闭lerna dev命令(使用CTRL+ C)时,它不会杀死所有正在运行的进程(有些被杀死,有些没有)。

有趣的是,那些没有关闭的是create-react-app projects.

所以这是我的问题:如何确保通过lerna run带有--parallel选项的命令启动的进程都与主进程一起被杀死?

PS:这发生在 Unix 系统上,我们不使用 Windows。

Dan*_*ebb 7

您可以使用kill-port在 NPM 脚本中一次杀死所有进程。

您还可以添加一个脚本来终止端口并运行lerna dev以确保端口已关闭并且在服务器启动时不会出现错误。

"scripts": {
  "kill-ports": "kill-port --port 4444,5555,3000",
  "dev": "npm run kill-ports && lerna run dev --parallel"
}
Run Code Online (Sandbox Code Playgroud)


Jef*_*eff 3

我建议您不要为此使用ctrl+ 。c看一下使用kill或通过 pid(进程 ID)杀死进程pkill -f

首先,查看哪些 lerna 进程正在运行。我的猜测是ps aux | grep lerna应该显示你想要的内容(如果需要的话调整 grep)。你可能会看到一个主进程(我在使用 Nginx 时看到,我从未使用过 lerna),如果这样的话,获取PID 并输入kill PID其中的 PID 是你的主 PID。如果这没有杀死所有进程,请使用pkill -f lerna杀死与 lerna 搜索项匹配的所有进程(如果需要,再次调整)。

有关如何根据搜索词终止进程的更多信息,请参阅如何终止与名称匹配的所有进程