pm2 运行 一个 'npm start' 脚本可以吗

Can pm2 run an 'npm start' script

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

开发中

npm start

然后在使用 pm2 的生产中你会 运行 类似

pm2 start 'npm start'

forever中有一个等效的方法可以做到这一点:

forever start -c "npm start" ./

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

建议的替代方案是使用 ecosystem.json 文件 Getting started with deployment,其中可以包括生产和开发环境的设置。但是,这仍在使用 npm start 到 bootstrap 您的应用程序。

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

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

然后,在下午 2 点开始 start.sh

pm2 start start.sh --name appNameYouLike

是的。使用 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.

PM2 现在支持 npm 启动:

pm2 start npm -- start

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

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

查看启用集群:

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

你怎么看?

使用 .json 文件之类的配置脚本到 运行 pm2 进程的用户可以使用 npm start 或类似这样的任何其他脚本 -

我的应用-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"
        }
    ]
}

更多详细信息here

现在,您可以在之后使用:

pm2 start npm -- start

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

是的,我们可以,现在 pm2 支持 npm start,--name 为 species app name。

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

使用npm run

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

pm2 start ./bin/www

可以运行

如果你想部署多台服务器 你可以做到。而不是 pm2 启动 npm -- start

不要忘记开始前的space

pm2 start npm --[space]start

所以正确的命令是:

pm2 start npm -- start

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

ecosystem.config.js中:

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

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

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

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

在 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

您需要在此处提供应用名称,例如 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

我需要 运行 我在 pm2 中的应用程序上的特定 npm 脚本(针对每个环境) 就我而言,是在我创建 staging/test 服务时

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

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"

希望对您有所帮助

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

对于普通用户

PM2 现在支持 npm 启动:

pm2 start npm -- start

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

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

对于根用户

sudo pm2 start npm -- start

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

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

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

...还有 Boooom!伙计们

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

cd /my-project

然后 运行

pm2 start "npm run start" \ run npm script from your package.json

阅读更多here