Executes commands in response to file modifications
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Félix Saparelli d6b1d36c6e
Avoid looping in demo (#486)
1 week ago
.cargo Learn some build optimisations from binstall (#416) 5 months ago
.github Lock CI for msrv checks (#482) 2 weeks ago
bin Remove obsolete bin/ scripts (#322) 8 months ago
completions Fix zsh autocomplete after using --shell=bash (#417) 5 months ago
crates Avoid looping in demo (#486) 1 week ago
doc Add openSUSE and MINGW packages (#453) 2 months ago
test Remask received signal after re-raising it 6 years ago
.clippy-lints Clippy fixes (#465) 3 weeks ago
.editorconfig Fix cli tests 1 year ago
.gitattributes Mark Cargo.lock as binary for merging (#305) 8 months ago
.gitignore Add rpm support with cargo-generate-rpm 2 years ago
.rustfmt.toml Apply tabs project-wide 1 year ago
CITATION.cff release: watchexec-cli v1.21.0 (#478) 3 weeks ago
CONTRIBUTING.md Add guide for crate release order (#468) 3 weeks ago
Cargo.lock release: watchexec-cli v1.21.0 (#478) 3 weeks ago
Cargo.toml Learn some build optimisations from binstall (#416) 5 months ago
LICENSE Create LICENSE 6 years ago
README.md Add usecase to README (#460) 3 weeks ago


CI status on main branch


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:

  • Automatically run unit tests
  • Run linters/syntax checkers
  • Rebuild artifacts


  • Simple invocation and use, does not require a cryptic command line involving xargs
  • Runs on OS X, Linux, and Windows
  • Monitors current directory and all subdirectories for changes
  • Coalesces multiple filesystem events into one, for editors that use swap/backup files during saving
  • Loads .gitignore and .ignore files
  • Uses process groups to keep hold of forking programs
  • Provides the paths that changed in environment variables
  • Does not require a language runtime, not tied to any particular language or ecosystem
  • And more!

Quick start

Watch all JavaScript, CSS and HTML files in the current directory and all subdirectories for changes, running npm run build when a change is detected:

$ watchexec -e js,css,html npm run build

Call/restart python server.py when any Python file in the current directory (and all subdirectories) changes:

$ watchexec -r -e py -- python server.py

More usage examples: in the CLI README!


Packaging status

All options in detail: in the CLI README and in the manual page.


Watchexec pairs well with:

  • checkexec: to run only when source files are newer than a target file
  • just: a modern alternative to make
  • systemfd: socket-passing in development