Table of Contents
URL: https://www.progressiverobot.com/workflow-nodemon-ja/
はじめに
Node.jsでは、変更を有効にするためにプロセスを再起動する必要があります。これにより、変更を行うためにワークフローに更なる手順が追加されます。nodemonを使用してプロセスを自動的に再起動することで、この余分な手順を排除できます。
この記事では、nodemonのインストール、セットアップ、設定について学びます。
ステップ 1—nodemonをインストール
まず、マシンにnodemonをインストールする必要があります。npmまたはYarnを使用して、ユーティリティをプロジェクトに、グローバルまたはローカルインストールします。
グローバルインストール
npmを使用してnodemonをグローバルにインストールすることができます。
npm install nodemon -g
または、yarnを使用して次のように行います。
yarn global add nodemon
ローカルインストール
npmを使用してnodemonをローカルにインストールすることもできます。ローカルインストールを実行する場合、--save-dev(または-dev)を使用してnodemonを開発の依存関係としてインストールできます。
npm install nodemon --save-dev
または、yarnを使用して次のように行います。
yarn add nodemon --dev
ローカルインストールでは、コマンドラインから直接nodemonコマンドを使用できないことに注意してください。
[secondary_label Output]
command not found: nodemon
これで、nodemonインストールプロセスは終了です。次に、プロジェクトでnodemonを使用します。
ステップ 2 — nodemonを使用したサンプルExpressプロジェクトのセットアップ
nodemonを使用してNodeスクリプトを実行することができます。たとえば、server.jsファイルにExpressサーバーのセットアップがある場合、それを実行して次のように変更を監視することができます。
nodemon <^>server.js<^>
Nodeを使用してスクリプトを実行するかのように、引数を渡すことができます。
nodemon <^>server.js<^> 3006
現在のディレクトリまたはサブディレクトリにあるデフォルトの監視拡張子(.js、.mjs、.json、.coffee、または.litcoffee)のいずれかを持つファイルに変更を加えるたびに、プロセスは再起動します。
Dolphin app listening on port ${port}!というメッセージを出力する、server.jsサンプルファイルを記述すると仮定しましょう。
nodemonを使用してサンプルを実行することができます。
nodemon <^>server.js<^>
次のように端末に出力されます。
[secondary_label Output]
[nodemon] 1.17.3
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node server.js`
<^>Dolphin<^> app listening on port 3000!
nodemonが実行中の状態で、server.jsファイルを変更して次のメッセージを出力しましょう。<^>Shark<^> app listening on port ${port}!
次のように端末に追加出力されます。
[secondary_label Output]
[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
<^>Shark<^> app listening on port 3000!
Node.jsアプリケーションからの端末出力は、期待通りに表示されています。rsと入力してENTERキーを押すと、いつでもプロセスを再起動することができます。
代わりに、nodemonは、プロジェクトのpackage.jsonファイルで指定されているmainファイルも検索します。
[label package.json]
{
// ...
<^>"main":<^> "server.js",
// ...
}
または、次のようにstartスクリプトを実行します。
[label package.json]
{
// ...
<^>"scripts":<^> {
<^>"start":<^> "node server.js"
},
// ...
}
package.jsonに変更を加えると、server.jsに渡す必要なく、nodemonを呼び出して監視モードでサンプルアプリを起動することができます。
ステップ 3 — オプションの使用
nodemonで使用可能な設定を変更することができます。
主なオプションをいくつか見ていきましょう。
--exec:--execスイッチを使用して、ファイルを実行するバイナリを指定します。たとえば、ts-nodeバイナリと組み合わせた場合、--execは変更を監視してTypeScriptファイルを実行するのに役立ちます。
--ext:監視するさまざまなファイル拡張子を指定します。このスイッチでは、ファイル拡張子のカンマ区切りリストを指定します(例:--ext js,ts)。
--delay:デフォルトでは、nodemonは、ファイルが変更されたときにプロセスを再起動するまで1秒間待機しますが、--delayスイッチを使用するとさまざまな遅延を指定することができます。たとえば、nodemon --delay 3.2で、3.2秒の遅延を指定します。
--watch:--watchスイッチを使用して、監視する複数のディレクトリまたはファイルを指定します。監視したいディレクトリごとに、--watchスイッチを1つ追加します。デフォルトでは、現在のディレクトリとそのサブディレクトリが監視されるため、--watchを使用すると、特定のサブディレクトリまたはファイルのみに絞り込むことができます。
--ignore:--ignoreスイッチを使用して、特定のファイル、ファイルパターン、またはディレクトリを無視します。
--verbose:再起動がトリガーされた原因となる、変更されたファイルに関する情報を含む詳細な出力。
次のコマンドを使用して、使用可能なすべてのオプションを表示することができます。
nodemon --help
これらのオプションを使用して、次のシナリオを満たすために コマンドを作成しましょう。
serverディレクトリを監視
.ts拡張子の付いたファイルを指定
.test.ts接尾辞の付いたファイルを無視
ts-nodeを使用してファイル(server/server.ts)を実行
- ファイルが変更された後、3秒間待機して再起動
nodemon --watch <^>server<^> --ext <^>ts<^> --exec <^>ts-node<^> --ignore <^>'*.test.ts'<^> --delay <^>3<^> <^>server/server.ts<^>
このコマンドは、--watch、--ext、--exec、--ignore、--delayオプションを組み合わせて、このシナリオの条件を満たします。
ステップ 4 — 設定の使用
前の例で、nodemonの実行時に設定スイッチを追加するのは、非常に面倒な作業です。特定の設定が必要なプロジェクトに適した解決策は、nodemon.jsonファイルでこれらの設定を指定することです。
たとえば、前のコマンドラインの例と同じ設定ですが、nodemon.jsonファイルに配置されています。
[label nodemon.json]
{
"watch": ["server"],
"ext": "ts",
"ignore": ["*.test.ts"],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}
--execスイッチではなく、execMapを使用していることに注意してください。execMapを使用すると、特定のファイル拡張子を指定して使用するバイナリを指定できます。
または、nodemon.json設定ファイルをプロジェクトに追加したくない場合は、nodemonConfigキーの中でpackage.jsonファイルにこれらの設定を追加することができます。
[label package.json]
{
"name": "test-nodemon",
"version": "1.0.0",
"description": "",
<^>"nodemonConfig":<^> {
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
},
// ...
nodemon.jsonまたはpackage.jsonに変更を加えたら、目的のスクリプトを使用してnodemonを実行することができます。
nodemon server/server.ts
nodemonは、設定を取得して使用します。このように、設定を保存、共有、繰り返して、コマンドラインでのコピー&ペーストや入力エラーを回避することができます。
まとめ
この記事では、Node.jsアプリケーションでnodemonを使用する方法を見てきました。このツールを使用すると、変更を表示するためにNodeサーバーを停止および起動するプロセスを自動化するのに役立ちます。
使用可能な機能とエラーのトラブルシューティングの詳細については、公式ドキュメントを参照してください。
Node.jsの詳細については、Node.jsトピックページで演習とプログラミングプロジェクトをご覧ください。