我的package.json
中有以下脚本:
"scripts": {
"start": "babel-node app"
}
当我运行npm start
然后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
哪一个是我的应用,为什么它在两个进程中运行?
答案 0 :(得分:3)
babel-node
是根进程,它会生成_babel-node
,这是实际执行应用程序的进程。
默认情况下,Babel在处理传递给子进程的参数后生成子进程,但父进程保持活动状态(这就是您所看到的)。你可以看到逻辑here。
查看该文件,Babel支持的一个选项是,您可以在Babel旁边安装kexec
,它将尝试使用它,然后再回到产生子进程。如果安装了kexec
,则整个父节点进程将被子节点替换,因此您的列表中只有一个进程。
因此,如果您希望停止此行为,只需将kexec
添加到package.json
旁边babel
。