为什么 "babel-node" 旋转 2 个进程?

Why "babel-node" spins 2 processes?

我的 package.json 中有以下脚本:

"scripts": {
  "start": "babel-node app"
}

当我 运行 npm start 然后 ps aux | grep node,我看到 2 个进程 运行ning:

mishamoroshko   18102  58.9  4.2  3173444 174656 s001  S+    2:37pm   0:03.18 node /Users/mishamoroshko/my-project/node_modules/babel/bin/_babel-node app
mishamoroshko   18101   0.0  0.4  3045884  15488 s001  S+    2:37pm   0:00.08 node /Users/mishamoroshko/my-project/node_modules/.bin/babel-node app

哪个是我的应用程序,为什么它在 2 个进程中 运行?

babel-node 是根进程,它生成 _babel-node 这是实际执行您的应用程序的进程。

默认情况下,Babel 在处理传递给子进程的参数后生成一个子节点进程,但父进程保持活动状态(这就是您所看到的)。你可以看到逻辑 here.

查看该文件,Babel 支持的一个选项是您可以将 kexec 与 Babel 一起安装,它会在回退到生成子进程之前尝试使用它。如果安装了 kexec,整个父 Node 进程将被子进程替换,因此您的列表中将只有一个进程。

因此,如果您希望停止此行为,只需将 kexec 添加到您的 package.json 旁边 babel