watchexec について
watchexec はディレクトリ内のファイルが変更されたときに、自動的に指定コマンドを実行します。拡張子、パスパターン、またはカスタム規則によって監視対象ファイルをフィルタリングでき、急速な変更をデバウンスして重複実行を防ぎます。ソースコード更新に対応する必要がある開発ワークフロー統合に適しています。
主な機能
- 01ファイル変更時にコマンドを自動実行
- 02拡張子またはパスパターンでフィルタリング
- 03急速な変更をデバウンスして重複実行を防止
活用シーン
- 01コード編集時にテストまたはビルドを自動再実行
- 02開発環境でコーディングエージェントにファイル変更への実時間応答を実装
- 03アクティブな開発ワークフロー内の繰り返しコマンドを削減
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
$
インストール後にwatchexec --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
01
02
詳細
Watchexec
ソフトウェア開発では、同じコマンドを何度も繰り返し実行することがよくあります。退屈です!
watchexecは、パスを監視し、変更を検知するたびにコマンドを実行する、シンプルで単体動作するツールです。
使用例:
- ユニットテストを自動実行する
- リンターや構文チェッカーを実行する
- 成果物を再ビルドする
機能
- シンプルな呼び出しと使い方で、
xargsを使う複雑なコマンドラインは不要です - OS X、Linux、Windowsで動作します
- 現在のディレクトリとすべてのサブディレクトリの変更を監視します
- 保存時にスワップファイルやバックアップファイルを使うエディター向けに、複数のファイルシステムイベントをまとめて1つにします
.gitignoreファイルと.ignoreファイルを読み込みます- プロセスグループを使って、フォークするプログラムを追跡します
- 変更されたパスを環境変数またはSTDINで提供します
- 言語ランタイムは不要で、特定の言語やエコシステムに依存しません
- その他の機能はこちら!
クイックスタート
現在のディレクトリとすべてのサブディレクトリにあるJavaScript、CSS、HTMLファイルを監視し、変更を検知したらnpm run buildを実行します。
$ watchexec -e js,css,html npm run build
現在のディレクトリ(およびすべてのサブディレクトリ)にあるPythonファイルが変更されたら、python server.pyを呼び出す、または再起動します。
$ watchexec -r -e py -- python server.py
使用例の詳細:CLIのREADMEをご覧ください!
インストール
- Arch、Debian、Homebrew、Nix、Scoop、Chocolateyなどのパッケージマネージャーを使う
- Binstallを使ってバイナリからインストールする:Binstall:
cargo binstall watchexec-cli - Githubのビルド済みバイナリパッケージからインストールする
- Cargoでソースからインストールする:
cargo install --locked watchexec-cli
すべてのオプションの詳細:CLIのREADME、
オンラインヘルプ(watchexec -h、watchexec --help、またはwatchexec --manual)、
およびマニュアルページをご覧ください。
組み合わせて使う
Watchexecは次のツールと相性がよいです。
拡張する
- watchexecライブラリ:watchexecを活用した、より特化したツールを作成できます。
- watchexec-events:watchexecのイベント型です。
- watchexec-signals:watchexecのシグナル型です。
- watchexec-supervisor:プロセスのライフサイクルを管理します(watchexecの_実行_部分です)。
- clearscreen:あらゆるプラットフォームで(ターミナルの)画面を消去します。
- process wrap:プロセスグループ内でコマンドを実行します。
- ignore files:無視ファイルを検索、解析、解釈します。
- project origins:プロジェクトの起点ディレクトリを見つけます。
- notify:ファイルの変更に応答します(サードパーティ製)。
下流プロジェクト
watchexec および関連クレートを利用するプロジェクトを紹介します。
cargo watch:Rust/Cargo プロジェクト向けの専用ウォッチャーです。- cargo lambda:Rust 製の AWS Lambda 関数向け開発ツールです。
- create-rust-app:Rust と React を使った Web アプリ向けのテンプレートです。
- devenv.sh:Nix ベースの宣言的な設定を備えた開発環境です。
- dotter:ドットファイル管理ツールです。
- ghciwatch:Haskell プロジェクト向けの専用ウォッチャーです。
- tectonic:TeX/LaTeX 組版システムです。
コメント
Markdown 対応