为什么“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
。