Executes commands in response to file modifications
Go to file
Félix Saparelli 96a6a6e9d9 Revert ignoring .git only when Git is discovered
And so on from other VCS. This causes confusion (ref #255) when watching
from outside a git repo, where the VCS type isn’t detected so the .git
folder is included in the watchset. While slightly incorrect, it’s more
expected that these folders be ignored regardless, and there’s always
--no-default-ignore to avoid those ignores if needed.
2022-02-07 17:15:27 +13:00
.github Disable Windows ARM64 builds 2022-01-26 10:25:33 +13:00
bin Fix citation versioning 2022-01-23 21:55:09 +13:00
cli Revert ignoring .git only when Git is discovered 2022-02-07 17:15:27 +13:00
completions Rename (with compat alias) --no-ignore to --no-project-ignore 2022-01-16 17:34:06 +13:00
doc Revert ignoring .git only when Git is discovered 2022-02-07 17:15:27 +13:00
lib Add help text to FsWatcherCreate on Linux 2022-02-07 17:15:27 +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 Start work on 1.18.6 2022-01-31 19:15:30 +13:00
Cargo.toml Move profile to where it's effective 2022-01-15 14:34:37 +13:00
CITATION.cff cli: v1.18.5 2022-01-31 00:49:45 +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 repology badge 2021-09-29 01:43:36 +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

All options in detail: in the CLI README.

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