pm2可以运行' npm start'脚本

时间:2015-07-23 06:18:02

标签: node.js npm pm2

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

所以在开发中

npm start

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

的东西

pm2 start 'npm start'

永远有一种等效的方法

forever start -c "npm start" ./

20 个答案:

答案 0 :(得分:250)

PM2现在支持npm start:

pm2 start npm -- start

答案 1 :(得分:61)

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

我-APP-pm2.json

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

然后简单地 -

pm2 start my-app-pm2.json

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

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

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

更多细节here

答案 2 :(得分:23)

我在下面编写了shell脚本(名为start.sh)。 因为我的package.jsonprestart选项。 所以我想运行npm start

#!/bin/bash
cd /path/to/project
npm start

然后,从pm2开始start.sh

pm2 start start.sh --name appNameYouLike

答案 3 :(得分:22)

是。使用pm2 start npm --no-automation --name {app name} -- run {script name}。有用。 --no-automation标志位于because without it PM2 will not restart your app when it crashes.

答案 4 :(得分:19)

我需要在pm2中的应用程序上运行特定的npm脚本(对于每个环境) 就我而言,这是我创建暂存/测试服务的时间

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

pm2 start npm --name "my-app-name" -- run "npm:script"

示例:

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

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

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

希望有帮助

答案 5 :(得分:9)

要使用npm run

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

答案 6 :(得分:7)

请参阅启用群集:

pm2 start npm --name "AppName" -i 0 -- run start

您怎么看?

答案 7 :(得分:7)

您需要在此处提供myapp之类的应用名称

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

您可以通过以下方式进行检查

pm2 list

您还可以添加时间

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

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

pm2 log "id"pm2 log "appName"

获取所有应用的日志

pm2 logs

答案 8 :(得分:3)

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

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

答案 9 :(得分:1)

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

建议的替代方法是使用ecosystem.json文件Getting started with deployment,其中可能包含生产环境和开发环境的设置。但是,这仍然使用npm start来引导您的应用。

答案 10 :(得分:1)

不幸的是,运行脚本start:prod并不幸运。

"scripts": {
   "start:prod": "node index.js"
},

命令pm2 start npm -- run start:prod崩溃

答案 11 :(得分:1)

在开始之前不要忘记空格

pm2 start npm --[space]start

所以正确的命令是:

pm2 start npm -- start

答案 12 :(得分:1)

如果通过节点模块而不是全局使用PM2,则需要设置interpreter: 'none'才能使上述解决方案起作用。相关文档here

ecosystem.config.js中:

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

答案 13 :(得分:1)

要使用npm start方法运行PM2并为其赋予name,请运行此程序,
pm2 start npm --name "your_app_name" -- start

要通过传递日志的日期格式来运行它,
pm2 start npm --name "your_name" --log-date-format 'DD-MM HH:mm:ss.SSS' -- start

答案 14 :(得分:1)

在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

答案 15 :(得分:0)

普通用户

PM2 现在支持 npm start:

pm2 start npm -- start

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

pm2 start npm --name "your desired app name" -- start

对于 root 用户

sudo pm2 start npm -- start

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

sudo pm2 start npm --name "your desired app name" -- start

答案 16 :(得分:0)

是的,绝对可以通过优雅地使用 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"
  }

假设我们要使用 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 脚本(在应用程序的 package.json 文件中提到的命令行):

对于生产环境:

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

对于开发环境:

pm2 start ecosystem.config.js --only NodeServer

...还有嘘!伙计们

答案 17 :(得分:0)

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

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

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

答案 18 :(得分:0)

pm2 start ./bin/www

可以运行

如果要部署多个服务器 你可以做到的。代替pm2 start npm -开始

答案 19 :(得分:0)

现在,你可以使用:

pm2 start npm -- start

关注https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319