繁体   English   中英

pm2 可以运行“npm start”脚本吗

[英]Can pm2 run an 'npm start' script

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

所以在开发中

npm start

然后在使用 pm2 进行生产时,您将运行类似

pm2 start 'npm start'

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

forever start -c "npm start" ./

PM2 现在支持 npm start:

pm2 start npm -- start

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

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

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

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

更多细节在这里

是的。 使用pm2 start npm --no-automation --name {app name} -- run {script name} 有用。 --no-automation标志在那里,因为没有它 PM2 在崩溃时不会重新启动你的应用程序。

使用npm run

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

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

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

然后,通过pm2启动start.sh

pm2 start start.sh --name appNameYouLike

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

对我有用的命令(必须以这种方式转发 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"

希望有帮助

您需要在此处提供应用程序名称,例如 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 start,--name 到物种应用程序名称。

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

请参阅启用集群:

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

你怎么认为?

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

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"
  }

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

不幸的是,运行脚本start:prod没有运气。

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

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

开始前不要忘记空格

pm2 start npm --[space]start

所以正确的命令是:

pm2 start npm -- start

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

建议的替代方案是使用ecosystem.json文件开始部署,其中可能包括生产和开发环境的设置。 但是,这仍然使用npm start来引导您的应用程序。

pm2 start ./bin/www

可以跑步

如果你想部署多台服务器,你可以这样做。 而不是 pm2 start npm -- start

它在 CentOS 7 上运行良好

PM2 版本 4.2.1

让我们假设两个场景:

1. npm start //server.js

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

2. npm run main //main.js

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

要使用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 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

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

pm2 start npm -- start

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

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

生态系统.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

在这里阅读更多

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM