mcpField
W
watchexec

watchexec

公式Agent-ready
github.com開発ツール7.3kwatchexec5 日前に更新
リポジトリ公式サイト

watchexec について

watchexec はディレクトリ内のファイルが変更されたときに、自動的に指定コマンドを実行します。拡張子、パスパターン、またはカスタム規則によって監視対象ファイルをフィルタリングでき、急速な変更をデバウンスして重複実行を防ぎます。ソースコード更新に対応する必要がある開発ワークフロー統合に適しています。

主な機能

  1. 01ファイル変更時にコマンドを自動実行
  2. 02拡張子またはパスパターンでフィルタリング
  3. 03急速な変更をデバウンスして重複実行を防止

活用シーン

  1. 01コード編集時にテストまたはビルドを自動再実行
  2. 02開発環境でコーディングエージェントにファイル変更への実時間応答を実装
  3. 03アクティブな開発ワークフロー内の繰り返しコマンドを削減

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install watchexec

インストール後にwatchexec --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
watchexec npm test
02
watchexec -e ts -- npm run build

詳細

メインブランチのCIステータス

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をご覧ください!

インストール

パッケージの状況

すべてのオプションの詳細:CLIのREADME、 オンラインヘルプ(watchexec -h、watchexec --help、またはwatchexec --manual)、 およびマニュアルページをご覧ください。

組み合わせて使う

Watchexecは次のツールと相性がよいです。

  • checkexec:ソースファイルがターゲットファイルより新しい場合にのみ実行します
  • just:makeに代わるモダンなツールです
  • systemfd:開発時にソケットを渡します

拡張する

  • watchexecライブラリ: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 組版システムです。

コメント