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

所以在发展中

npm start

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

pm2 start 'npm start'

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

forever start -c "npm start" ./

当前回答

如果你通过节点模块而不是全局使用PM2,你需要设置interpreter: 'none'以使上述解决方案工作。相关文档在这里。

在ecosystem.config.js:

  apps: [
    {
      name: 'myApp',
      script: 'yarn',
      args: 'start',
      interpreter: 'none',
    },
  ],

其他回答

那些使用类似.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"
        }
    ]
}

这里有更多细节。

首先,您需要创建一个run.js文件,并将下面的代码粘贴到该文件上。

const { spawn } = require('child_process');
//here npm.cmd for windows.for others only use npm
const workerProcess = spawn('npm.cmd', ['start']); 

  workerProcess.stdout.on('data', function (data) {  
      console.log('stdout: ' + data);  
   });  
 workerProcess.stderr.on('data', function (data) {  
      console.log('stderr: ' + data);  
   });  
 workerProcess.on('close', function (code) {  
      console.log('child process exited with code ' + code);  
   });  

然后用pm2运行这个文件。

pm2 start run.js 

列表项

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

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

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

是的,你绝对可以通过优雅地使用pm2配置(json)文件非常有效地做到这一点。

包中。Json文件(包含以下示例脚本)

"scripts": {
    "start": "concurrently npm:server npm:dev",
    "dev": "react-scripts start",
    "build": "node ./scripts/build.js",
    "eject": "react-scripts eject",
    "lint": "eslint src server",
    "shivkumarscript": "ts-node -T -P server/tsconfig.json server/index.ts"
  }

假设我们想要使用pm2实用程序运行名为“shivkumarscript”的脚本。因此,我们的pm2配置文件应该如下所示,包含值为'npm'的'script'键和值为'run '的'args'键。在本例中,脚本名称为“shivkumarscript”。

ecosystem.config.json文件

module.exports = {
    apps: [
        {
            name: "NodeServer",
            script: "npm",
            automation: false,
            args: "run shivkumarscript",
            env: {
                NODE_ENV: "development"
            },
            env_production: {
                NODE_ENV: "production"
            }
        }
    ]
}

假设你已经在你的机器上安装了Node.js, NPM和PM2。然后下面应该是通过pm2启动应用程序的命令,它将反过来运行npm脚本(应用程序包中提到的命令行)。json文件):

生产环境:

pm2 start ecosystem.config.js --env production --only NodeServer

开发环境:

pm2 start ecosystem.config.js --only NodeServer

...和Boooom !人

它在CentOS 7上运行良好

PM2版本4.2.1

让我们举两个例子:

1. npm start //server.js

pm2 start "npm -- start" --name myMainFile

2. NPM运行main //main.js

pm2 start "npm -- run main" --name myMainFile