npmにはwatchする文化があって、ファイル変更を検知して自動ビルドなどを走らせたりできる。
Rustにも似たような機能が欲しい。というのも、趣味でWebアプリケーションを書いているので、コードの修正を検知して勝手にサーバを再起動させたいからだ。
調べたところcargoのプラグインでcargo-watchというのがあり、うまく動いたのでメモ。もしうまくいかなかったら、OMakeを使うつもりだった。
インストール
cargo
を使ってインストールできる。
cargo install cargo-watch
使う
cargo watch
が基本的な使い方で、いろいろオプションをつけることで活用できる。
変更を検知してcargo check
する
デフォルトの挙動なのでcargo watch
と書くだけでよい。
cargo watch
ビルドする
-x
オプションを使う。任意のcargo
サブコマンドを実行できる。
cargo watch -x build
任意のシェルコマンドを実行する
--
を使う。
cargo watch -- echo "Hello World"
任意のシェルコマンドを実行するその2
-s
を使うと&&
とかを便利に表現できる。
cargo watch -s 'cargo build && ./target/debug/foobar'
Webサーバを実装しているときに非常に便利である。
コマンド動作までのディレイを設定する
デフォルトでは、ファイル変更検知から0.5秒後にコマンドが実行される。この挙動は-d
で制御できる。
cargo watch -d 10 -x build