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.2
3.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トピックページで演習とプログラミングプロジェクトを確認してください。