pm2可以运行'npm start'脚本

svn*_*vnm 158 node.js npm pm2

有没有办法让pm2运行一个npm启动脚本,或者你只需​​要运行 pm2 start app.js

所以在发展中

npm start

然后在pm2的制作中你会运行类似的东西

pm2 start 'npm start'

永远有一种相同的方法可以做到这一点

forever start -c "npm start" ./

Dha*_*han 342

PM2现在支持npm start:

pm2 start npm -- start
Run Code Online (Sandbox Code Playgroud)

  • pm2 start npm --name"你的APP名称" - 开始 (127认同)
  • 有谁知道如何在进程文件中设置`npm start`? (6认同)
  • 救星.可以先确认这项工作.:) (4认同)
  • 使用此命令时如何为进程设置名称?我尝试使用`--name"app"`但它只是将它设置为npm. (3认同)
  • @mqchen检查下面的[answer](http://stackoverflow.com/a/42619477/4440874). (2认同)
  • 当我尝试此操作时,为什么我会处于“已停止”状态?我的启动脚本看起来像这样`“start”:“cross-env NODE_ENV =生产nodemon dist-prod / server.js”` (2认同)
  • 嗯,我想我找到了问题的答案。这不是pm2或npm的事情,它似乎是* nix的一种说法,即“我已经完成了命令选项的设置并想开始传递参数”:https://unix.stackexchange.com/questions/11376/what-是否双破折号也称为裸双破折号 (2认同)

Jyo*_*ngh 79

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

我-APP-pm2.json

{
    "apps": [
        {
            "name": "my-app",
            "script": "npm",
            "args" : "start"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

然后简单 -

pm2 start my-app-pm2.json
Run Code Online (Sandbox Code Playgroud)

编辑 - 要在父目录中具有此配置脚本并想要在子目录中启动应用程序时处理用例,请使用该cwd属性.

假设我们的应用程序位于nested-app相对于此配置文件的子目录中,则 -

{
    "apps": [
        {
            "name": "my-nested-app",
            "cwd": "./nested-app",
            "script": "npm",
            "args": "start"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

更多细节在这里.

  • @GianfrancoP.您可以使用`cwd`属性.检查我编辑的答案:) (2认同)

jco*_*lum 29

是.使用pm2 start npm --no-automation --name {app name} -- run {script name}.有用.该--no-automation标志是存在的,因为没有它,当它崩溃PM2不会重新启动您的应用程序.

  • 更新:好的,我发现您需要指定“自动化”:false。 (2认同)

Tom*_*mri 28

我需要在 pm2 中的应用程序上运行特定的 npm 脚本(对于每个 env)在我的情况下,它是在我创建临时/测试服务时

对我有用的命令(必须以这种方式转发 args):

pm2 start npm --name "my-app-name" -- run "npm:script"
Run Code Online (Sandbox Code Playgroud)

例子:

pm2 start npm --name "myApp" -- run "start:test"

pm2 start npm --name "myApp" -- run "start:staging"

pm2 start npm --name "myApp" -- run "start:production"
Run Code Online (Sandbox Code Playgroud)

希望有帮助

  • 请注意,“--run”之间有一个空格。需要留有空间,否则您将运行无效的选项。 (2认同)

小智 25

我在下面编写了shell脚本(命名start.sh).因为我package.jsonprestart选择权.所以我想跑npm start.

#!/bin/bash
cd /path/to/project
npm start
Run Code Online (Sandbox Code Playgroud)

然后,从start.shpm2 开始.

pm2 start start.sh --name appNameYouLike
Run Code Online (Sandbox Code Playgroud)


car*_*kod 19

使用 npm run

pm2 start npm --name "{app_name}" -- run {script_name}

  • 这应该被接受的答案。 (2认同)

小智 19

您需要在此处提供应用程序名称,例如 myapp

pm2 start npm --name {appName} -- run {script name}
Run Code Online (Sandbox Code Playgroud)

你可以通过

pm2 list
Run Code Online (Sandbox Code Playgroud)

你也可以添加时间

pm2 restart "id" --log-date-format 'DD-MM HH:mm:ss.SSS'
Run Code Online (Sandbox Code Playgroud)

或者

pm2 restart "id" --time
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式检查日志

pm2 log "id"
Run Code Online (Sandbox Code Playgroud)

或者

pm2 log "appName"
Run Code Online (Sandbox Code Playgroud)

获取所有应用的日志

pm2 logs
Run Code Online (Sandbox Code Playgroud)


Nel*_*ank 17

您可以将目录更改为您的项目

cd /my-project
Run Code Online (Sandbox Code Playgroud)

然后运行

pm2 start "npm run start" \\ run npm script from your package.json
Run Code Online (Sandbox Code Playgroud)

或者

pm2 start "yarn start"
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多内容


Kev*_*per 11

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

ecosystem.config.js

  apps: [
    {
      name: 'myApp',
      script: 'yarn',
      args: 'start',
      interpreter: 'none',
    },
  ],
Run Code Online (Sandbox Code Playgroud)


Ash*_*pta 10

对于普通用户

PM2 现在支持 npm start:

pm2 start npm -- start
Run Code Online (Sandbox Code Playgroud)

要为 PM2 进程分配名称,请使用“--name”选项:

pm2 start npm --name "your desired app name" -- start
Run Code Online (Sandbox Code Playgroud)

对于根用户

sudo pm2 start npm -- start
Run Code Online (Sandbox Code Playgroud)

要为 PM2 进程分配名称,请使用“--name”选项:

sudo pm2 start npm --name "your desired app name" -- start
Run Code Online (Sandbox Code Playgroud)


KAR*_*N.A 8

是的,我们可以,现在pm2支持npm start,--name到种类应用程序名称。

pm2 start npm --name "app" -- start
Run Code Online (Sandbox Code Playgroud)


Luk*_*son 8

pm2 start npm --name "custom_pm2_name" -- run prod

"scripts": {
    "prod": "nodemon --exec babel-node ./src/index.js"
  }
Run Code Online (Sandbox Code Playgroud)

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

  • 非常感谢你,卢克。特别感谢您将脚本发布在旁边,不再猜测哪个“开始”是哪个:)这应该获得更高的评价,终于可以正常工作了。 (3认同)

Shi*_*vam 8

是的,绝对可以通过优雅地使用 pm2 配置(json)文件来非常有效地完成它。

package.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"
  }
Run Code Online (Sandbox Code Playgroud)

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

生态系统.config.json 文件

module.exports = {
    apps: [
        {
            name: "NodeServer",
            script: "npm",
            automation: false,
            args: "run shivkumarscript",
            env: {
                NODE_ENV: "development"
            },
            env_production: {
                NODE_ENV: "production"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

对于生产环境:

pm2 start ecosystem.config.js --env production --only NodeServer
Run Code Online (Sandbox Code Playgroud)

对于开发环境:

pm2 start ecosystem.config.js --only NodeServer
Run Code Online (Sandbox Code Playgroud)

...还有轰隆隆!伙计们


jdn*_*lsc 7

请参阅启用群集:

pm2 start npm --name "AppName" -i 0 -- run start
Run Code Online (Sandbox Code Playgroud)

你怎么看?