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