Express や Restify で Web サーバの実装をしていると、ソースコードの修正があるたびに Ctrl + C でサーバを強制終了し、node app.js
で再起動するという操作が必要になります。
node
コマンドの代わりに nodemon コマンドを使用すると、ソースコードの変更を監視し、自動的に node
コマンドを再起動してくれます。
$ nodemon app.js
node
の代わりに nodemon
とタイプするだけで、快適な実装生活を送ることができます。
Node.js でサーバ系のコーディングを行うときは nodemon
を使うようにしましょう!
nodemon
コマンドは、Node.js 付属の npm
コマンドで簡単にインストールすることができます。
$ npm install -g nodemon
システム全体で使用可能なコマンドとしてインストールしたいので、-g
オプションを付けて実行してください。
ここでは、Node.js の標準モジュールである http
を使って簡単な Web サーバを作り、それを nodemon
で起動してみます。
下記は、Hello
と返答を返すだけの簡単な Web サーバプログラムです。
var server = require('http').createServer();
server.on('request', function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello\n');
res.end();
});
server.listen(51200);
console.log('Server listening on port 51200')
node
コマンドの代わりに nodemon
コマンドを使ってこのプログラムを実行します。
$ nodemon app.js
[nodemon] 1.19.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`
Server listening on port 51200
出力に [nodemon]
というプレフィックスが付いている行は、nodemon
によって出力されているメッセージです。
自分で実装したプログラムの出力はそのまま表示されています(Server listening on port 51200
の部分)。
nodemon
はデフォルトでは *.js
ファイルや *.json
ファイルの変更を監視しており、変更を検出すると自動的に node
コマンドを再実行します。
例えば、上記の app.js
の中の Hello
という文字列を Hogeeeee
に変更して保存すると、下記のように表示され、Web サーバが自動的に再起動します。
[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
Server listening on port 51200
監視するファイルをオプション指定で絞り込んだり、package.json
にその設定を書いておくこともできます。
詳しくは、nodemon --help
や、下記のドキュメントサイトを参照してください。