簡體   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