mirror of
https://github.com/watchexec/watchexec.git
synced 2024-11-13 07:41:11 +01:00
Executes commands in response to file modifications
656c0d8fd2
Specifically, on loop start the timeout would be for the full throttle duration, which is not correct if some time has passed or the loop goes on recycle |
||
---|---|---|
.github/workflows | ||
bin | ||
cli | ||
completions | ||
doc | ||
lib | ||
test | ||
.editorconfig | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
CITATION.cff | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md |
Watchexec
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
Features
- 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!
Install
- As pre-built binary package: https://watchexec.github.io/downloads/
- With your package manager for Arch, Homebrew, Nix, Scoop, Chocolatey…
- From source with Cargo:
cargo install watchexec-cli
All options in detail: in the CLI README.
Extend
- watchexec library: to create more specialised watchexec-powered tools! such as:
- cargo watch: for Rust/Cargo projects.
- clearscreen: to clear the (terminal) screen on every platform.
- command group: to run commands in process groups.
- notify: to respond to file modifications (third-party).
- globset: to match globs (third-party).