Executes commands in response to file modifications
Find a file
Félix Saparelli ecc3256fa4
chore: Release
2024-10-14 23:22:34 +13:00
.cargo repo: fix deprecated cargo config file 2024-06-29 15:39:37 +12:00
.github macos-11 was retired 2024-07-03 02:33:01 +12:00
bin Run manpage and completions in release when we've already built in releases 2024-04-21 01:57:09 +12:00
completions Manpage and completions 2024-10-14 18:06:42 +13:00
crates chore: Release 2024-10-14 23:22:34 +13:00
doc chore: Release 2024-06-30 21:02:32 +12:00
.clippy-lints feat(cli): Add NO_COLOR support (#779) 2024-02-11 05:13:41 +00:00
.editorconfig Fix cli tests 2021-08-24 22:53:44 +12:00
.gitattributes Fix and adjust docs (#530) 2023-03-18 10:23:46 +00:00
.gitignore Clap 4 and revamp manpage, completions (#513) 2023-03-05 14:57:34 +13:00
.rustfmt.toml Apply tabs project-wide 2021-08-24 20:22:25 +12:00
Cargo.lock chore: Release 2024-10-14 23:22:34 +13:00
Cargo.toml Fix watchexec-events tests 2024-04-21 00:36:59 +12:00
CITATION.cff chore: Release 2024-06-30 21:02:32 +12:00
CONTRIBUTING.md document current release process 2024-10-14 11:47:42 +13:00
LICENSE Create LICENSE 2016-09-18 16:43:26 -04:00
README.md New option: --signal-map (#710) 2023-12-09 09:30:58 +00:00

CI status on main branch

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
  • Rebuild artifacts

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 or STDIN
  • 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

All options in detail: in the CLI README, in the online help (watchexec -h, watchexec --help, or watchexec --manual), 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

Downstreams

Selected downstreams of watchexec and associated crates: