nodemon は、ディレクトリ内のファイルの変更が検出されると、自動的に node アプリケーションを再起動することによって、 node.js ベースのアプリケーション開発を支援するツールです。

nodemon は、コードまたは開発方法の追加変更を必要としません。nodemon は node に代わるラッパーです。 nodemon を使用するには、スクリプトを実行するときにコマンドラインで node という単語を置き換えます。

インストール

git で複製するか npm(推奨方法):

npm install -g nodemon

そして nodemon はあなたのシステムパスに対してグローバルにインストールされることになるでしょう。

また、開発依存としてnodemonをインストールすることもできます:

npm install --save-dev nodemon

ローカルインストールで、nodemonはシステムパスで利用できません。 代わりに、nodemon のローカル インストールは、npm スクリプト (npm start など) 内から呼び出すか、npx nodemon を使用して実行することができます。

使用法

nodemon はアプリケーションをラップしますので、通常アプリケーションに渡すすべての引数を渡すことができます:

nodemon 

CLI オプションには、-h (か--help) 引数を使用します。

nodemon -h

nodemon の使用は簡単で、アプリケーションがホストとポートを引数として受け入れる場合、次のように起動します:

nodemon ./server.js localhost 8080

このスクリプトからの出力には を先頭に付け、それ以外はエラーを含むアプリケーションからのすべての出力が期待どおりに出力されるようエコーされます。

スクリプトが与えられない場合、nodemonはpackage.jsonファイルをテストし、見つかった場合、メインプロパティ(ref)に関連するファイルを実行します。

また、通常と同様にコマンドラインを通してinspectフラグをnodeに渡すことができます:

nodemon --inspect ./server.js 80

アプリにpackage.jsonファイルがある場合、メインスクリプトを完全に省略でき、nodemonはpackage.jsonmainプロパティ用に読み、アプリとしてこの値を使用します。

nodemonはまた、package.jsonscripts.startプロパティを検索します(nodemon 1.1.xとして)。

また、nodemonのFAQまたは問題をチェックします。

自動再走行

nodemon は元々ウェブサーバーのようなハングしたプロセスを再開するように書かれていましたが、今ではきれいに終了するアプリをサポートします。 スクリプトがきれいに終了する場合、nodemonは、ディレクトリ(またはディレクトリ)を監視し続け、変更がある場合、スクリプトを再開します。

手動で再起動

nodemonが動作している間、手動でアプリケーションを再起動する必要がある場合、nodemonを停止および再起動する代わりに、キャリッジリターンでrsを入力することができ、nodemonはプロセスを再起動します。 これらは、通常nodemon.jsonと名付けられ、現在の作業ディレクトリまたはホームディレクトリに位置することができます。 代替のローカル設定ファイルは、--config <file>オプションで指定することができます。

特異性は次のとおりで、コマンドライン引数は常に config ファイルの設定を上書きします:

  • command line arguments
  • local config
  • global config

config ファイルは例えば JSON キー値としてコマンドライン引数をいずれも取ることが可能です。

{ "verbose": true, "ignore": , "execMap": { "rb": "ruby", "pde": "processing --sketch={{pwd}} --run" }}

上記のnodemon.jsonファイルは、私がrubyファイルと処理ファイルのサポートを持つように私のグローバル設定であるかもしれません、そして私はnodemon demo.pdeを実行でき、処理スクリプトのボックスサポートであってもnodemonが自動的にスクリプトを実行する方法を知ることができるのです。

オプションのさらなる例は、sample-nodemon.md

package.json

すべてのパッケージ設定を1つの場所で維持したい場合、nodemonは設定にpackage.jsonを使用することをサポートしています。コンフィグファイルと同じフォーマットでコンフィグを指定しますが、package.jsonファイルのnodemonConfigの下に、例えば、次のpackage.json:

{ "name": "nodemon", "homepage": "http://nodemon.io", "...": "... other standard package.json values", "nodemonConfig": { "ignore": , "delay": "2500" }}

なお、--configファイルを指定するかローカルのnodemon.jsonを提供すると、どんなpackage.jsonのコンフィグも無視されます。

このセクションはより良いドキュメントを必要としますが、今のところ、nodemon --help config (ここでも)を参照してください。

モジュールとしてnodemonを使用

doc/requireable.mdを参照してください

子プロセスとしてnodemonを使用

doc/eventsを参照してください

nodemon --help configを参照。md

non-nodeスクリプトの実行

nodemonは、他のプログラムを実行し、監視するために使用することもできます。 2265>:

nodemon --exec "python -v" ./app.py

今、nodemonはapp.pyを冗長モードのpythonで実行し(実行プログラムに引数を渡していない場合、引用符は必要ありません)、.py拡張子の新しいファイルまたは変更されたファイルを探します。

デフォルトの実行ファイル

nodemon.json 設定ファイルを使用し、execMap プロパティを使用して独自のデフォルト実行ファイルを定義することが可能です。 これは、nodemonでデフォルトでサポートされていない言語を使用している場合に特に便利です。

.pl拡張子(Perl用)について知るためにnodemonのサポートを追加するには、nodemon.jsonファイルに以下を追加します:

{ "execMap": { "pl": "perl" }}

ここで以下を実行して、nodemonは実行ファイルとして perl を使用します:

nodemon script.pl

独自のexecMapオプションを追加するのにグローバルnodemon.jsonを使うことが一般的に推奨されています。 しかし、欠落している共通のデフォルトがある場合、default.jsを変更し、pull requestを送信することにより、nodemonがデフォルトでそれをサポートするように、プロジェクトにマージすることができます。

Monitoring multiple directories

デフォルトでnodemonは現在のワーキングディレクトリをモニターします。 このオプションを制御したい場合は、--watchオプションを使って特定のパスを追加します。

nodemon --watch app --watch libs app/server.js

これで、nodemonは./appまたは./libsディレクトリに変更があった場合のみ再起動するようになりました。

複数のディレクトリ、例えば--watch ./lib/*を渡すためにunix globbingを使用しないでください、それは動作しません。

拡張子監視リストの指定

nodemon -e js,pug

今、nodemonは、.js, .pug拡張子を持つディレクトリ(またはサブディレクトリ)内のファイルへの変更で再起動します。

ファイルの無視

デフォルトで、nodemonは.js JavaScriptファイルが変更したときのみ再起動します。 いくつかのケースでは、nodemonが早期にアプリケーションを再起動するのを防ぐために、いくつかの特定のファイル、ディレクトリまたはファイルパターンを無視したいと思うでしょう。

これはコマンドラインから行うことができます:

nodemon --ignore lib/ --ignore tests/

または特定のファイルは無視できます:

nodemon --ignore lib/app.js

パターンも無視できます(ただし引数を引用することを確認してください)。

nodemon --ignore 'lib/*.js'

デフォルトで、nodemonは.git, node_modules, bower_components, .nyc_output, coverage, .sass-cacheディレクトリを無視して、リストにあなたの無視パターンを追加していることに注意してください。 node_modules のようなディレクトリを実際に監視したい場合は、基本的なデフォルトの無視ルールを上書きする必要があります。

Application isn’t restarting

いくつかのネットワーク環境 (マウントされたドライブ上で読む nodemon を実行しているコンテナなど) では、Chokidar のポーリングを可能にする legacyWatch: true を使用する必要があります。

CLI では、--legacy-watch または -L のいずれかを使用します。

nodemon -L

ただし、これは見つけられるすべてのファイルをポーリングするため、最後の手段でなければなりません。

再起動を遅らせる

いくつかの状況では、いくつかのファイルが変更されるまで待ちたくなることがあります。 新しいファイルの変更をチェックする前のタイムアウトは1秒です。

追加のスロットルを追加するか、再起動を遅らせるには、--delay コマンドを使用します:

nodemon --delay 10 server.js

より正確にするには、ミリ秒を指定できます。 float:

nodemon --delay 2.5 server.js

または時間指定子 (ms):

nodemon --delay 2500ms server.js

遅延時間は再起動までの秒数(指定した場合はミリ秒)です。

この値をnodemon.jsonで設定している場合、値は常にミリ秒単位で解釈されます。 例.

nodemon --delay 2.5{ "delay": "2500"}

Gracefully reloading down your script

nodemonに、あなたがアプリケーションに指定した任意のシグナルを送らせることができます。

nodemon --signal SIGHUP server.js

あなたのアプリケーションは、次のようにシグナルを処理できます。

process.once("SIGHUP", function () { reloadSomeConfiguration();})

nodemonは、プロセスツリーのすべてのプロセスにこのシグナルを送信することに注意してください。 SIGHUP を受け取ったときにすべてのワーカーを終了させたい場合、一般的なパターンは、マスターで SIGHUP をキャッチし、すべてのワーカーが SIGHUP を無視するようにしながら SIGTERM をすべてのワーカーに転送します。

Controling shutdown of your script

nodemon has a kill signal to your application when it see a file update.

次の例は、SIGUSR2シグナル(nodemonが再起動するために使用)を一度聞き、クリーンアッププロセスを実行し、nodemonがコントロールを継続するために自身を殺します:

process.once('SIGUSR2', function () { gracefulShutdown(function () { process.kill(process.pid, 'SIGUSR2'); });});

process.killはシャットダウンジョブが完了するとのみ呼ばれることに注意してください。

nodemonの状態が変化したときにイベントをトリガーする

nodemonが再起動したときにgrowlのような通知をしたい場合、またはイベントが発生したときにアクションをトリガーしたい場合、require nodemonまたはnodemon.jsonファイルにイベントアクションを追加することが可能です。

例えば、nodemonが再起動したときにMac上で通知をトリガするために、nodemon.jsonは次のようになります:

{ "events": { "restart": "osascript -e 'display notification \"app restarted\" with title \"nodemon\"'" }}

利用できるイベントの全リストは、イベントステートWikiにリストされています。

Pipe output to somewhere else

Using nodemon in your gulp workflow

Check out the gulp-nodemon plugin to integrate nodemon with the rest of your project of gulp workflow.

Pipe output to somewhere else

Pipe output to somewhere else Output to anywhere else.No.

Using nodemon in your Grunt workflow

Check out the grunt-nodemon plugin to integrate nodemon with the rest of your project’s grunt workflow.Grunt ワークフローで nodemon を使用する。

Pronunciation

nodemon, is it pronounates: node-mon, no-demon or node-e-mon (like pokémon)?

Well…I have been many times before this askeded. 前に聞かれたことがあるのはいいことですね。

答えは簡単ですが、もしかしたら不満があるかもしれません。 私は(どう発音するか)言ってません。 好きなように呼ぶのはあなた次第です。 すべての答えが正解です.)

Design principles

  • Fewer Flags is better
  • Works across all platforms
  • Fewer features
  • Let individuals nodemonの上に構築する

  • すべてのCLI機能をAPIとして提供する
  • 貢献はテストを持ち、パスしなければならない

Nodemon は完璧ではありません。 CLI の引数は、私が完全に満足できる範囲を超えて広がっていますが、おそらくいつか少しは減らせるでしょう。

FAQ

FAQ を見て、もしそれが他の人の助けになると思うならば、あなた自身の質問を加えてください。 🙏

Sponsors

スポンサーになって、このプロジェクトをサポートしてください。 あなたのロゴはここに表示され、あなたのウェブサイトへのリンクが貼られます。 今すぐこのプロジェクトのスポンサーになる ❤️

License

MIT http://rem.mit-license.org

コメントを残す

メールアドレスが公開されることはありません。