Software development often involves running the same commands over and over. Boring!
watchexec
is a simple, standalone tool that watches a path and runs a command whenever it detects modifications.
Example use cases:
.gitignore
to determine which files to ignore notifications for$WATCHEXEC_UPDATED_PATH
the path of the first file that triggered a change$WATCHEXEC_COMMON_PATH
the longest common path of all of the files that triggered a changexargs
Watch all JavaScript, CSS and HTML files in the current directory and all subdirectories for changes, running make
when a change is detected:
$ watchexec --exts js,css,html make
Call make test
when any file changes in this directory/subdirectory, except for everything below target
:
$ watchexec -i target make test
Call ls -la
when any file changes in this directory/subdirectory:
$ watchexec -- ls -la
Call/restart python server.py
when any Python file in the current directory (and all subdirectories) changes:
$ watchexec -e py -r python server.py
Call/restart my_server
when any file in the current directory (and all subdirectories) changes, sending SIGKILL
to stop the child process:
$ watchexec -r -k my_server
Run make
when any file changes, using the .gitignore
file in the current directory to filter:
$ watchexec make
Run make
when any file in lib
or src
changes:
$ watchexec -w lib -w src make
watchexec requires Rust 1.9 or later. You can install it using cargo:
$ cargo install watchexec
$ brew install watchexec
For now, use the GitHub Releases tab to obtain the binary. PRs for packaging in various distros are welcomed.
Use the GitHub Releases tab to obtain the binary. In the future, I'll look at adding it to Chocolatey.
Rust 1.9 or later is required.