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

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

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

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

 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 

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

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

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

看一下这个文件,Babel支持的一个选项就是你可以把kexec和Babel一起安装,它会在返回产生subprocess之前尝试使用它。 如果安装了kexec ,则整个父节点进程将由subprocess取代,所以在列表中只有一个进程。

所以,如果你想停止这种行为,只需添加kexec到你的package.json旁边babel