nodemonをただのファイルウォッチャーとして使う


nodemon.jsファイルを監視実行する以外にも使えますよという内容。

サンプル的なコードはこちら。
https://github.com/gcoka/scss-practice

背景

sassの練習をしようとして、各環境を作ろうとしたのですが、
なんとなくgemのsassを入れるのを嫌ってnode-sassで変換させようとしました。

node-sass -o dist --output-style expanded --include-path src --watch src/test.scss

ところが、いくら--watchオプションをつけても、最初の起動時に1度変換するだけで、ファイル変更しても一切反応してくれませんでした。--watchにバグがあるようなissueも見かけたので、諦めてnodemonにファイル監視させることにしました。

nodemonにファイル監視だけさせるには

--execオプションを使います(短いオプションは-x)

本来の使い方は、node server.jsの代わりとしてnodemon server.jsといった具合に実行するJavaScriptを渡しますが、代わりに--execを渡すこともできます。今回の例だと--execで実行するコマンドはnodeで起動するコマンドですらありませんが、問題ありません。

package.jsonに動かしたいコマンドと、監視付きのコマンドの両方を定義しましょう。

"scripts": {
  "sass": "node-sass -o dist --output-style expanded --include-path src src/test.scss",
  "watch:sass": "nodemon --ext scss --watch src --exec 'npm run sass'"
},

これで無事、SCSSの自動変換がされるように。

他にも

工夫次第で、開発時の自動リロードを実現するための補助として使うことが出来ます。
よくある例では、 node.js + Expressなどで、 src以下が変更されたらnpm run startを起動し直すとか。

nodemon --ext js,jsx,scss,html --watch src -x 'npm run start'