## 環境 | 対象 | バージョン | | ---------- | -------------------- | | [[Ubuntu]] | 24.04.1 LTS | | [[mise]] | `d9e6de8 2025-01-12` | ## やり方 [[mise]]の`mise watch`コマンドを利用する。内部的には[[watchexec]]を使っているらしい。 `hoge.sh`に変更があったとき、`./hoge.sh`を自動で再実行するには `.mise.toml` に以下のように書く。`tasks.dev` の `dev` はタスク名。 ```toml [tasks.dev] run = "./hoge.sh" ``` あとは以下のコマンドで実行しておく。 ```console mise watch dev ``` ## 特定のファイル/ディレクトリ変更時だけ再実行 `.mise.toml`に`sources`を追加する。 ```toml [tasks.dev] run = "./hoge.sh" sources = ['hoge.sh'] ``` これで以下のような2つのファイルがあったとき `hoge.sh` ```bash #!/bin/bash str="fixup! hoge" if [[ "${str}" == "fixup! "* ]]; then echo "in" fi source ./fuga.sh ``` `fuga.sh` ```bash #!/bin/bash echo "fugafugaaaa!" ``` `mise watch`コマンドを実行する ```console mise watch dev ``` `hoge.sh`に変更があるとコマンドが実行されるが、`fuga.sh`を変更してもコマンドは実行されなくなる。 ## 参考 - [Running Tasks | mise-en-place](https://mise.jdx.dev/tasks/running-tasks.html)