Executes commands in response to file modifications
Go to file
Félix Saparelli d38428f297 Look up project origin on implicit pwd
This may cause some more issues to crop up while waiting for --project-origin,
but it is the more correct behaviour.

Fixes #270
2022-03-27 16:31:58 +13:00
.github Use cargo-install gh task 2022-03-18 14:12:23 +13:00
bin Setup cargo-release 2022-02-10 01:40:32 +13:00
cli Look up project origin on implicit pwd 2022-03-27 16:31:58 +13:00
completions Rename (with compat alias) --no-ignore to --no-project-ignore 2022-01-16 17:34:06 +13:00
doc Update man 2022-03-16 16:23:57 +13:00
lib lib: v2.0.0-pre.13 2022-03-18 15:00:02 +13:00
test Remask received signal after re-raising it 2016-12-15 09:41:10 -05:00
.editorconfig Fix cli tests 2021-08-24 22:53:44 +12:00
.gitignore Add rpm support with cargo-generate-rpm 2021-07-10 03:48:12 +12:00
.rustfmt.toml Apply tabs project-wide 2021-08-24 20:22:25 +12:00
Cargo.lock cli: v1.18.9 2022-03-18 15:18:58 +13:00
Cargo.toml Move profile to where it's effective 2022-01-15 14:34:37 +13:00
CITATION.cff cli: v1.18.9 2022-03-18 15:18:58 +13:00
CONTRIBUTING.md Add test logging and dev-console debugging hints 2021-12-24 02:48:21 +13:00
LICENSE Create LICENSE 2016-09-18 16:43:26 -04:00
README.md Add shout-outs to friends of watchexec 2022-02-08 14:59:41 +13:00
release.toml Setup cargo-release 2022-02-10 01:40:32 +13:00

CI status

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

Packaging status

  • 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
  • From binary with Binstall: cargo binstall watchexec-cli

All options in detail: in the CLI README.

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:
  • 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).