nodemonを使用してNode.jsアプリを自動的に再起動する方法
序章
Node.jsでは、変更を有効にするためにプロセスを再起動する必要があります。 これにより、ワークフローに追加のステップが追加されます。 nodemon を使用してプロセスを自動的に再開することにより、この余分な手順を排除できます。
nodemon は、 @rem によって開発されたコマンドラインインターフェイス(CLI)ユーティリティであり、ノードアプリをラップし、ファイルシステムを監視し、プロセスを自動的に再起動します。
この記事では、インストール、セットアップ、および構成について学習します nodemon.
前提条件
この記事をフォローしたい場合は、次のものが必要になります。
- Node.jsはローカルにインストールされます。これは、Node.jsのインストール方法とローカル開発環境の作成に従って実行できます。
このチュートリアルは、Node.js v17.1.0、npm v8.1.2、 nodemon v2.0.15、および express v4.17.1。
ステップ1—インストール nodemon
まず、インストールする必要があります nodemon あなたのマシンで。 npmまたはyarnを使用して、ユーティリティをプロジェクトにグローバルまたはローカルにインストールします。
グローバルインストール
インストールできます nodemon グローバルに npm:
- npm install nodemon --global
またはと yarn:
- yarn global add nodemon
ローカルインストール
インストールすることもできます nodemon ローカルで。 ローカルインストールを実行する場合、インストールできます nodemon dev依存関係として --save-dev (また --dev).
インストール nodemon ローカルで npm:
- npm install nodemon --save-dev
またはと yarn:
- yarn add nodemon --dev
ローカルインストールで注意すべきことの1つは、 nodemon 直接コマンド:
- Outputcommand not found: nodemon
ローカルにインストールされたパッケージを実行できます。
- ./node_modules/nodemon/bin/nodemon.js [your node app]
これで、 nodemon インストールプロセス。
ステップ2—Expressプロジェクトの例を設定する nodemon
使用できます nodemon ノードスクリプトを開始します。 たとえば、Expressサーバーのセットアップが server.js ファイル、開始できます nodemon 次のような変更に注意してください。
- nodemon server.js
Nodeを使用してスクリプトを実行している場合と同じ方法で、引数を渡すことができます。
- nodemon server.js 3006
デフォルトの監視対象拡張子の1つを含むファイルに変更を加えるたびに(.js, .mjs, .json, .coffee、 また .litcoffee)現在のディレクトリまたはサブディレクトリで、プロセスが再起動します。
例を書いてみましょう server.js メッセージを出力するファイル: Dolphin app listening on port ${port}!.
const express = require('express')
const app = express()
const port = 3000
app.listen(port, ()=> console.log(`Dolphin app listening on port ${port}!`))
で例を実行します nodemon:
- nodemon server.js
端末出力には次のように表示されます。
Output[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
Dolphin app listening on port 3000!
その間 nodemon まだ実行中です、変更を加えましょう server.js ファイル。 出力を別のメッセージに変更します。 Shark app listening on port ${port}!.
端末出力には次のように表示されます。
Output[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Shark app listening on port 3000!
Node.jsアプリからのターミナル出力は、新しい変更を表示しています。
次のように入力すると、いつでもプロセスを再開できます。 rs と打つ ENTER.
または、 nodemon また、 main プロジェクトで指定されたファイル package.json ファイル:
{
// ...
"main": "server.js",
// ...
}
もし main ファイルが指定されていません、 nodemon 検索します start 脚本:
{
// ...
"scripts": {
"start": "node server.js"
},
// ...
}
に変更を加えたら package.json、その後、電話をかけることができます nodemon パスインせずにサンプルアプリをウォッチモードで起動するには server.js.
ステップ3—オプションの使用
利用可能な構成設定を変更できます nodemon.
主なオプションのいくつかを見てみましょう:
--exec: 使用--execスイッチを使用して、ファイルを実行するバイナリを指定します。 たとえば、 ts-node バイナリと組み合わせると、--exec変更を監視し、TypeScriptファイルを実行するのに役立ちます。--ext:監視するさまざまなファイル拡張子を指定します。 このスイッチでは、ファイル拡張子のコンマ区切りリストを提供します(例:--ext js,ts).--delay:デフォルトでは、nodemonファイルが変更されたときにプロセスを再開するために1秒間待機しますが、--delayスイッチでは、別の遅延を指定できます。 例えば、nodemon --delay 3.23.2秒の遅延。--watch: 使用--watch監視する複数のディレクトリまたはファイルを指定するように切り替えます。 1つ追加します--watch見たいディレクトリごとに切り替えます。 デフォルトでは、現在のディレクトリとそのサブディレクトリが監視されます。--watch特定のサブディレクトリまたはファイルのみに絞り込むことができます。--ignore: 使用--ignore特定のファイル、ファイルパターン、またはディレクトリを無視するように切り替えます。--verbose:再起動をトリガーするために変更されたファイルに関する情報を含む、より詳細な出力。
次のコマンドを使用して、使用可能なすべてのオプションを表示できます。
- nodemon --help
これらのオプションを使用して、次のシナリオを満たすコマンドを作成しましょう。
- 見て
serverディレクトリ - でファイルを指定する
.ts拡大 - でファイルを無視する
.test.tsサフィックス - ファイルの実行(
server/server.ts) とts-node - ファイルが変更された後、再起動するのを3秒間待機します
- nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts
端末出力には次のように表示されます。
Output[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): server
[nodemon] watching extensions: ts
[nodemon] starting `ts-node server/server.ts`
このコマンドは結合します --watch, --ext, --exec, --ignore、 と --delay シナリオの条件を満たすためのオプション。
ステップ4—構成の使用
前の例では、実行時に構成スイッチを追加します nodemon 退屈になる可能性があります。 複雑な構成を必要とするプロジェクトのより良い解決策は、これらのオプションを nodemon.json ファイル。
たとえば、これは前のコマンドラインの例と同じ構成ですが、 nodemon.json ファイル:
{
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}
の使用に注意してください execMap の代わりに --exec スイッチ。 execMap 特定のファイル拡張子のバイナリを指定できます。
または、追加したくない場合は nodemon.json プロジェクトに構成ファイルを追加すると、これらの構成をプロジェクトに追加できます。 package.json 下のファイル nodemonConfig 鍵:
{
"name": "nodemon-example",
"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 構成を取得して使用します。 このようにして、構成を保存、共有、および繰り返して、コマンドラインでのコピーアンドペーストまたは入力エラーを回避できます。
結論
この記事では、使用方法を検討しました nodemon Node.jsアプリケーションで。 このツールは、変更を表示するためにノードサーバーを停止および開始するプロセスを自動化するのに役立ちます。
使用可能な機能とトラブルシューティングエラーの詳細については、公式ドキュメントを参照してください。
Node.jsの詳細については、Node.jsトピックページで演習とプログラミングプロジェクトを確認してください。