mirror of
https://github.com/watchexec/watchexec.git
synced 2024-10-06 09:53:55 +02:00
Executes commands in response to file modifications
f866e6f498
This is a release PR for **cli** to version **1.20.5**. Upon merging, this will automatically build the CLI and create a GitHub release. You still need to manually publish the cargo crate. ``` $ cd crates/cli $ cargo publish ``` To merge this release, review the changes then say: | bors r+ p=10 | |:-:| --- _Edit release notes into the section below:_ <!-- do not change or remove this heading --> ### Release notes - Fix: mimalloc was set as the global allocator in the watchexec library, instead of leaving it to downstreams. (#369) - Releng: s390x and ppc64le targets were added to be prebuilt. (#373) |
||
---|---|---|
.github | ||
bin | ||
completions | ||
crates | ||
doc | ||
test | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.rustfmt.toml | ||
bors.toml | ||
Cargo.lock | ||
Cargo.toml | ||
CITATION.cff | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
release.toml |
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: from Github, from the website
- With your package manager for Arch, Homebrew, Nix, Scoop, Chocolatey…
- From source with Cargo:
cargo install watchexec-cli
- From binary with Binstall:
cargo binstall watchexec-cli
All options in detail: in the CLI README and in the manual page.
Augment
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
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.
- ignore files: to find, parse, and interpret ignore files.
- project origins: to find the origin(s) directory of a project.
- notify: to respond to file modifications (third-party).
- globset: to match globs (third-party).