

皆さんこんにちは。
今回はNodeJSで開発環境を構築した時に、そのままファイルを変更しても適用されておらず手動でサーバーを更新しないと変更が反映されないといったことがあったので、ファイル変更を監視して自動でサーバーを更新するようにしてみたのでご紹介します。
私の開発環境では「AdonisJS」というNodeJSのフレームワークを使って作業していますが、”express”や”sailsJS”等でも同じような環境は作れるかと思います。
開発環境の情報
1 2 |
node: v18.17.1 nodemon: ^3.0.1 |
nodemonをインストール
nodemonとはソースを監視して自動でサーバーを再起動してくれるツールです。
nodeの代わりにnodemonを使ってサーバーを起動していきます。
1 |
npm install nodemon --save-dev |
まずはnodemonをインストールします。
インストール後、そのまま実行するとこのように表示されます。
1 2 3 4 5 6 |
[nodemon] 3.0.1 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,cjs,json [nodemon] starting `node server.js` info: serving app on http://127.0.0.1:{port} |
はい、これでnodeの代わりにサーバーを立ち上げることができました。
“[nodemon] watching path(s): *.*”
これが監視してるパスになるので、プロジェクト全体のパスを監視していますね。
“[nodemon] watching extensions: js,mjs,cjs,json”
そして、これが監視しているファイルの拡張子になります。
上記の監視しているパスの中から該当する拡張子類に対して変更が加わった時にnodemonが自動でサーバーを再起動させます。
nodemonの設定を加える
特に特別な設定を加えているプロジェクトでなければnodemonを使った開発環境は完了しますが、
私の環境ではviewに”pug”を使っているため”pug”ファイルを変更してもnodemonの監視外となります。
なので、nodemonがサーバーを再起動してくれず変更を適用させるには手動でサーバーを再起動させなければいけません。
そこで、nodemonに設定を加えて監視対象を増やしていきましょう。
まずは、プロジェクトルート直下に以下のファイルを作成しましょう。
1 |
nodemon.json |
私の設定では中身は以下のようになっています。
1 2 3 4 5 |
{ "watch": ["resources", "app", "config", "start"], "ext": "js,mjs,cjs,json,pug", "ignore": ["resources/js/*", "resources/sass/*"] } |
watch プロパティ
nodemonが監視対象とするパスを指定します。
指定がない場合はプロジェクト全体を監視します。
ext プロパティ
nodemonが監視対象するファイル拡張子を指定します。
指定がない場合はデフォルトのファイル拡張子を監視します。
ignore プロパティ
nodemonの監視対象から除外したいパスを指定します。
指定がない場合は監視対象とするパスもしくはプロジェクト全体をそのまま監視します。
私の環境下ではフロントでReactを使っていることもあり、必要最低限の監視対象としました。
プロパティの設定はすべて上書き設定になるので、既存の設定を残したい場合は一緒に設定を追加する必要があります。