pm2 start npm --name test -- start
在使用 PM2(一个流行的 Node.js 应用程序的进程管理器)来守护(守护进程)执行 npm 命令时,你可以通过几种方式来实现。下面是一些常见的方法:
如果你有一个 package.json 文件,其中定义了 scripts,你可以直接使用 PM2 来启动这些脚本。例如,如果你的 package.json 文件中有一个 start 脚本:
"scripts": {
"start": "node app.js"
}
你可以使用以下命令启动它:
pm2 start npm --name "my-app" -- run start
这里,--name "my-app" 是为你的应用指定一个名称,-- run start 告诉 PM2 运行 npm start 命令。
如果你想要直接运行一个 Node.js 文件而不是通过 npm 脚本,你可以这样做:
pm2 start app.js --name "my-app"
这将会直接启动 app.js 文件。
如果你想要运行一个自定义的 npm 命令,比如一个没有在 package.json 中定义的命令,你可以这样做:
pm2 start npm --name "my-custom-command" -- run custom-command
然后,在你的 package.json 中添加一个自定义脚本:
"scripts": {
"custom-command": "node some-other-script.js"
}
PM2 支持通过一个生态系统文件(通常命名为 ecosystem.config.js)来管理多个应用程序。这样,你可以定义多个应用和它们的启动配置。例如:
module.exports = {
apps : [{
name : "my-app",
script : "npm",
args : "start",
exec_mode : "fork_mode", // 或者 "cluster_mode" 如果你想要集群模式
env: {
NODE_ENV: "production"
},
env_production : {
NODE_ENV: "production"
}
}]
};
然后,使用以下命令启动应用:
pm2 start ecosystem.config.js
选择哪种方法取决于你的具体需求。如果你只是想快速启动一个 npm 脚本,方法 1 和方法 3 很方便。如果你需要更复杂的配置或管理多个应用,方法 4(使用生态系统文件)会更合适。直接运行 Node.js 文件的方法(方法 2)在你不依赖于 package.json 中的脚本时也很实用。

