隙あらば寝る

うぇぶのかいしゃではたらくえんじにあがかいています

ファイルの変更検知と自動ビルドにおすすめのreflex

ソフトウェアの開発中、エディタで変更を保存したらすぐにコマンドを実行したくなるようなことはよくある。

典型的なパターンとしてはサーバのコードを書き換えたら再コンパイルしてプロセス再起動など。

こういうケースは nodejs のエコシステムではよく使われている印象で、livereload 等のキーワードで調べるとすぐに見つかると思う。

ただ、サーバ側のコードに変更が必要だったりするので、もうちょっとシンプルな方法でやりたいところ。

そういうケースに使える reflex というツールがある。

github.com

go で書かれたツールなので go get github.com/cespare/reflex で使えるようになる。

reflex は指定した監視対象に変更があったら任意のコマンド実行 をサポートする。

サンプルとして記載されているが、

reflex -r '\.c$' make

の場合、正規表現で監視対象を設定しており、 .c で終わるファイルに変更があった場合に make を実行する という処理が起動する。

例えば起動コマンドにシェルスクリプトを指定することも可能なので、

reflex -r '\.go$' -- sh -c "go build && ./program"

のようにワンライナーコンパイル & 実行のような書き方ができる。

reflexの良いところは特定言語やフレームワークに依存しないところで、言語や用途問わず応用できるところだと思う。

一例だが、特定ディレクトリに期待しないファイルが増えたら削除するというような使い方もでる。

色々な用途が考えられるし、引き出しに持っていて損はないツール。