pm2は 'npm start'スクリプトを実行できます


214

pm2がnpm起動スクリプトを実行する方法はありますか、それとも実行する必要がありますか pm2 start app.js

だから開発中

npm start

次に、pm2を使用した本番環境では、次のように実行します。

pm2 start 'npm start'

これを行うには同等の方法がありますforever

forever start -c "npm start" ./

これはDhavalで与え答えるために拡張したものです stackoverflow.com/a/37775318/4828326 「PM2:DEV」:あなたのパッケージのJSONスクリプトは次のように更新し、開発モードの場合、あなたのpackage.json 2.に1.まず追加PM2「をnode_modules / pm2 / bin / pm2-dev start npm-start "、
Rama Krishna

回答:


438

PM2がnpm startをサポートするようになりました:

pm2 start npm -- start

PM2プロセスに名前を割り当てるには、--nameオプションを使用します。

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

5
このコマンドを使用するときに、プロセスの名前をどのように設定できますか?私は使ってみました--name "app"が、それはそれをnpmに設定しました。
silverlight513 2016

171
pm2 start npm --name "Your APP Name"
-start

7
誰もがnpm startプロセスファイルに設定する方法を知っていますか?
mqchen 2017年

1
どうもありがとうございます!
hkg328 2018年

3
ああ、私は私の質問に対する答えを見つけたと思います。それは、PM2またはNPMことではない、「私はコマンドのオプションを与える行われ、引数を渡す開始したいんだ」と言っての* nixの道のようだ:unix.stackexchange.com/questions/11376/...
クリス・シュミッツ

96

.jsonファイルのような構成スクリプトを使用してpm2プロセスを実行している人は、次のnpm startようなスクリプトを使用できます-

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

詳細はこちら


1
親フォルダーから開始npmスクリプトを実行する場合、これはどのように機能しますか?
Gianfranco P.

1
もう少し詳しく説明してもらえますか?プロジェクトディレクトリの外からnpm start を実行する方法を 尋ねていると思いますか?
Jyotman Singh 2017

構成スクリプトを使用して、サブフォルダーにある複数のノードアプリを実行しています。startスクリプト情報を含むpackage.jsonは、それらの1つにあります。この要点を参照してください:gist.github.com/gianpaj/04c5680a8275616aac5e46374e07f673これを実行すると、どこnpmから実行するべきかわかりません。Thx
ジャンフランコP.

3
@GianfrancoP。cwd属性を使用できます。編集済みの回答を確認してください:)
Jyotman Singh 2017

私はsudo npmを使用しようとしましたが、ディレクトリを作成するためのアクセスエラーが表示されます。rootとしてユーザーにすべての権限を与え、pm2コマンドを実行しましたsudo pm2 start config.json
Mr AJ

39

はい。を使用しpm2 start npm --no-automation --name {app name} -- run {script name}ます。できます。これ--no-automationないと、PM2はクラッシュしたときにアプリを再起動しません。


1
Ecosystem.js構成ファイル内でこのフラグを使用する方法について何か考えがありますか?
トム・

1
更新:さて、「自動化」を指定する必要があることがわかりました:false。
トム

@twigg pm2 --help | grep 'no-autom'はバージョン1.0.2で1行を返します
jcollum '17年

27

使用するには npm run

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


25

以下にシェルスクリプトを記述しました(名前はstart.sh)。私にpackage.jsonprestart選択肢があるからです。だから走りたいnpm start

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

次に、start.shpm2 から始めます。

pm2 start start.sh --name appNameYouLike

それはすばらしい。残念ながら、これはstartOrRestartコマンドの使用時には機能しません。
xpepermint 2015

@xpepermintは、最後に-fフラグを使用するだけです。それはスタートを強制します。(つまり、すでに開始されている場合は再始動します)
Zeeno

16

はい、できます。pm2がnpm startをサポートするようになりました。--nameから種アプリ名に。

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

これは私を本当に助けた答えです。どうもありがとう。
Adesh Kumar

9

クラスタリングを有効にするために参照してください:

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

どう思いますか?


何をし-i 0ますか?
Johhan Santana 2017

1
使用可能なCPUに応じて最大プロセスを開始します(クラスターモード)
jdnichollsc

7

グローバルではなくノードモジュールを介してPM2を使用する場合interpreter: 'none'は、上記のソリューションが機能するように設定する必要があります。関連ドキュメントはこちら

ecosystem.config.js

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

7

特定のnpmスクリプトをpm2のアプリで(envごとに)実行する必要がありました。私の場合、ステージング/テストサービスを作成したときです。

私のために働いたコマンド(引数はそのように転送される必要があります):

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"

それが役に立てば幸い


4

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

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

他の人がしなかったときにこれは私のために働きました


3

ここにmyappのようなアプリ名を指定する必要があります

pm2 start npm --name "appName" -- start

あなたはそれをチェックすることができます

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


2

開始前にスペースを忘れないでください

pm2 start npm --[space]start

したがって、正しいコマンドは次のとおりです。

pm2 start npm -- start

1

残念ながら、pm2はリクエストされた正確な機能をサポートしていないようですhttps://github.com/Unitech/PM2/issues/1317

提案された代替案は、本番環境と開発環境のセットアップを含む可能性のあるecosystem.jsonファイル「デプロイメントの開始」を使用することです。ただし、これはまだnpm startアプリのブートストラップに使用されています。


それはどういう意味ですか?However, this is still using npm start to bootstrap your app.実際にnpm start使用して実行できますpm2か?
xpepermint 2015

1
pm2 start ./bin/www

走ることができます

複数のサーバーをデプロイする場合は、それを行うことができます。pm2 start npmの代わりに-start


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


0

今、あなたは後に使用することができます:

pm2 start npm -- start

フォローするhttps://github.com/Unitech/pm2/issues/1317#issuecomment-220955319


あなたの答えを広げることができますか?回答方法からのアドバイス:外部リソースへのリンクが推奨されますが、リンクの前後にコンテキストを追加して、他のユーザーがそれが何であるか、なぜそこにあるのかを理解できるようにしてください。ターゲットサイトに到達できない、または永久にオフラインになる場合に備えて、常に重要なリンクの最も関連性の高い部分を引用してください。
moodboom 2017年

0

CentOS 7では問題なく動作しています

PM2バージョン4.2.1

次の2つのシナリオを考えてみましょう。

1. npm start //server.js

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

2. npm run main //main.js

pm2 start "npm -- run main" --name myMainFile
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.