web-dev-qa-db-ja.com

pm2を使用するときにNode.jsプロジェクトを自動的にリロードする方法

私は現在Express.jsでNode.jsをプログラミングしています。ファイルルーターまたはアプリでコード行を変更するたびに、次のコマンドを入力する必要があります。

pm2 reload id_project.

ファイルが変更されたときにpm2にプロジェクトを自動再読み込みさせるにはどうすればよいですか?

17
Mr.Dung

デフォルトでは、ノードはファイルを変更するたびにサーバーを自動的に更新しません。特定のpm2ソリューションについてはわかりませんが、nodemonでそれを行うことができます。次のようにインストールするだけです:npm install -g nodemonと使用:nodemon server.js

個人的には、@ rogier-spiekerの回答で受け入れられた回答が得られるようです。 (この回答が承認されている限り、削除することもできません)

0
Thatkookooguy

pm2プロジェクトを--watchオプションで開始する必要があります。

pm2 start <script|name|id> --watch

ここで、<script|name|id>は以下を参照します。

  • script pm2に処理させたい script へのパス
  • name"ecosystem"ファイル内の構成の名前
  • idは、 pm2 list を使用して取得できるpm2を使用してすでに実行されているアプリケーションを参照します(これには実際にはrestartではなくstartが必要になるため、おそらく最小です望ましいオプション)

無視するファイル/ディレクトリを指定することもできます:

pm2 start <script> --watch --ignore-watch "node_modules"

監視と再起動

または、pm2でプロジェクトをどのように処理するかを記述した「ecosystem」jsonファイルを作成します。

{
  "name": "project_name",
  "script": "index.js",
  "watch": true,
  "ignore_watch": ["node_modules"]
}

JSONオプション

92
Rogier Spieker

PM2には便利な 開発ツール が付属しており、アプリケーションを起動して、ファイルの変更時にアプリケーションを再起動できます。

# Start your application in development mode
# it print the logs and restart on file change too

# Two way of running your application :
pm2-dev start my-app.js

# or

pm2-dev my-app.js
3
hthserhs

pm2はNode多くのベルとホイッスルを備えたプロセスマネージャです。以下のコマンドを実行して、ディレクトリ内のファイルの変更が検出されたときにノードアプリケーションを自動的に再起動できます。

pm2 start index.js --watch

Pm2はバックグラウンドで処理を実行するため、ctrl+c実行中のpm2プロセスから抜け出す方法。 IDまたは名前を渡すことで停止する必要があります。

pm2 stop 0
pm2 stop index

他の2つのオプションは以下のとおりです

npx supervisor index.js
nodemon index.js
2