nodemon は、ディレクトリ内のファイルの変更が検出されると、自動的に node アプリケーションを再起動することによって、 node.js ベースのアプリケーション開発を支援するツールです。
nodemon は、コードまたは開発方法の追加変更を必要としません。nodemon は node
に代わるラッパーです。 nodemon
を使用するには、スクリプトを実行するときにコマンドラインで node
という単語を置き換えます。
- インストール
- 使用法
- 自動再走行
- 手動で再起動
- package.json
- モジュールとしてnodemonを使用
- 子プロセスとしてnodemonを使用
- non-nodeスクリプトの実行
- デフォルトの実行ファイル
- Monitoring multiple directories
- 拡張子監視リストの指定
- ファイルの無視
- Application isn’t restarting
- 再起動を遅らせる
- Gracefully reloading down your script
- Controling shutdown of your script
- nodemonの状態が変化したときにイベントをトリガーする
- Pipe output to somewhere else
- Using nodemon in your gulp workflow
- Pipe output to somewhere else
- Using nodemon in your Grunt workflow
- Pronunciation
- Design principles
- FAQ
- Sponsors
- License
インストール
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.json
をmain
プロパティ用に読み、アプリとしてこの値を使用します。
nodemonはまた、package.json
のscripts.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
- すべてのCLI機能をAPIとして提供する
- 貢献はテストを持ち、パスしなければならない
Let individuals nodemonの上に構築する
Nodemon は完璧ではありません。 CLI の引数は、私が完全に満足できる範囲を超えて広がっていますが、おそらくいつか少しは減らせるでしょう。
FAQ
FAQ を見て、もしそれが他の人の助けになると思うならば、あなた自身の質問を加えてください。 🙏
Sponsors
スポンサーになって、このプロジェクトをサポートしてください。 あなたのロゴはここに表示され、あなたのウェブサイトへのリンクが貼られます。 今すぐこのプロジェクトのスポンサーになる ❤️
License
MIT http://rem.mit-license.org