npm 命令 运行 进程之间的区别是什么:
What are the differences between the processes run by npm command:
最近我使用 node.js+express 做了一个简单的 API 服务器。下面的脚本是我 package.json 文件的一部分,我使用 npm 命令 运行。
"scripts": {
...
"release": "cross-env NODE_ENV=production MODE=release node server/app.js",
}
在我使用 npm 运行 release 启动服务器后,我可以看到如下多个进程 运行ning 在我的 Linux 服务器上。
/bin/sh /api/node_modules/.bin/cross-env NODE_ENV=development MODE=test node server/app.js
node /api/node_modules/.bin/../cross-env/bin/cross-env.js NODE_ENV=development MODE=test node server/app.js
node server/app.js
我阅读了相关文档here,但我不明白后台实际发生了什么。
- 创建进程的顺序是什么? npm => /bin/sh => 节点 /api/.. => 节点 server/app.js ?
- 每个进程的作用是什么? 运行 我的服务器需要这三个进程吗?
- 如果我想用 pid 杀死服务器,我应该使用哪个进程 ID?
What is the order of creating processes? npm => /bin/sh => node /api/.. => node server/app.js ?
What does each process do? All three processes are necessary to run my server?
嗯,流程是这样的:
- NPM 在你的 shell 中产生(你 运行 它),npm 本身 运行s 与 NPX in order to set the local path。
- 您的 npm 脚本从名为
cross-env
的包中生成一个进程,用于 cross-OS 环境变量设置。
- 该进程依次产生 Node.js(设置环境变量后)
这就是您看到 3 个进程的原因。在您的服务器本身 运行 之后 - 运行 服务器只需要实际的服务器进程。
If I wants to kill the server with pid, which process id should I use?
这个:node server/app.js
- 因为那是你的实际服务器,其他的只是“实用程序”(一个用于你的 npm 脚本 运行,另一个用于环境变量)。
值得一提的是,一般来说 - 服务器 运行 位于容器或其他 orchestrators/managers 中,这些 built-in 逻辑用于 restarting/killing 进程。通常,编排器会向进程发送 SIGTERM。
最近我使用 node.js+express 做了一个简单的 API 服务器。下面的脚本是我 package.json 文件的一部分,我使用 npm 命令 运行。
"scripts": {
...
"release": "cross-env NODE_ENV=production MODE=release node server/app.js",
}
在我使用 npm 运行 release 启动服务器后,我可以看到如下多个进程 运行ning 在我的 Linux 服务器上。
/bin/sh /api/node_modules/.bin/cross-env NODE_ENV=development MODE=test node server/app.js
node /api/node_modules/.bin/../cross-env/bin/cross-env.js NODE_ENV=development MODE=test node server/app.js
node server/app.js
我阅读了相关文档here,但我不明白后台实际发生了什么。
- 创建进程的顺序是什么? npm => /bin/sh => 节点 /api/.. => 节点 server/app.js ?
- 每个进程的作用是什么? 运行 我的服务器需要这三个进程吗?
- 如果我想用 pid 杀死服务器,我应该使用哪个进程 ID?
What is the order of creating processes? npm => /bin/sh => node /api/.. => node server/app.js ?
What does each process do? All three processes are necessary to run my server?
嗯,流程是这样的:
- NPM 在你的 shell 中产生(你 运行 它),npm 本身 运行s 与 NPX in order to set the local path。
- 您的 npm 脚本从名为
cross-env
的包中生成一个进程,用于 cross-OS 环境变量设置。 - 该进程依次产生 Node.js(设置环境变量后)
这就是您看到 3 个进程的原因。在您的服务器本身 运行 之后 - 运行 服务器只需要实际的服务器进程。
If I wants to kill the server with pid, which process id should I use?
这个:node server/app.js
- 因为那是你的实际服务器,其他的只是“实用程序”(一个用于你的 npm 脚本 运行,另一个用于环境变量)。
值得一提的是,一般来说 - 服务器 运行 位于容器或其他 orchestrators/managers 中,这些 built-in 逻辑用于 restarting/killing 进程。通常,编排器会向进程发送 SIGTERM。