是否有一种方法让pm2运行npm启动脚本,或者你只需要运行pm2 start app.js

所以在发展中

npm start

然后在使用pm2的生产中,你会运行这样的程序

pm2 start 'npm start'

有一种等效的方法可以永远做到这一点:

forever start -c "npm start" ./

当前回答

那些使用类似.json文件的配置脚本来运行pm2进程的人可以使用npm start或任何其他类似的脚本

my-app-pm2.json

{
    "apps": [
        {
            "name": "my-app",
            "script": "npm",
            "args" : "start"
        }
    ]
}

那么简单——

pm2 start my-app-pm2.json

Edit -当你在父目录中有这个配置脚本,并且想要在子目录中启动应用程序时,使用cwd属性来处理用例。

假设我们的应用程序在相对于这个配置文件的nested-app子目录中,那么-

{
    "apps": [
        {
            "name": "my-nested-app",
            "cwd": "./nested-app",
            "script": "npm",
            "args": "start"
        }
    ]
}

这里有更多细节。

其他回答

PM2现在支持npm start:

pm2 start npm -- start

要给PM2进程分配一个名称,使用——name选项:

pm2 start npm --name "app name" -- start

是的。使用pm2启动npm——no-automation——name{应用程序名称}——运行{脚本名称}。它的工作原理。——no-automation标志的存在是因为如果没有它,PM2将不会在应用崩溃时重新启动应用。

Pm2启动NPM——name" custom_pm2_name"——运行prod

"scripts": {
    "prod": "nodemon --exec babel-node ./src/index.js"
  }

当其他人没有的时候,这对我有用

不幸的是,pm2似乎不支持您要求的确切功能https://github.com/Unitech/PM2/issues/1317。

建议的替代方案是使用生态系统。开始部署,其中可能包括生产和开发环境的设置。然而,这仍然使用npm start来引导你的应用程序。

你需要在这里提供应用程序名称,比如myapp

pm2 start npm --name {appName} -- run {script name}

你可以通过

pm2 list

你也可以加上时间

pm2 restart "id" --log-date-format 'DD-MM HH:mm:ss.SSS'

or

pm2 restart "id" --time

您可以通过

pm2 log "id"

or

pm2 log "appName"

获取所有应用程序的日志

pm2 logs