watchexec/README.md

58 lines
2.3 KiB
Markdown
Raw Normal View History

[![CI status](https://github.com/watchexec/watchexec/actions/workflows/check.yml/badge.svg)](https://github.com/watchexec/watchexec/actions/workflows/check.yml)
2021-05-08 17:39:13 +02:00
# Watchexec
2016-10-15 20:03:23 +02:00
2016-09-18 22:42:11 +02:00
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
2021-05-08 17:39:13 +02:00
## Features
2016-09-18 22:42:11 +02:00
2021-05-08 17:39:13 +02:00
* Simple invocation and use, does not require a cryptic command line involving `xargs`
* Runs on OS X, Linux, and Windows
2016-11-17 14:46:23 +01:00
* Monitors current directory and all subdirectories for changes
2016-09-18 22:42:11 +02:00
* Coalesces multiple filesystem events into one, for editors that use swap/backup files during saving
2021-05-08 17:39:13 +02:00
* 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!](./cli/#features)
2016-09-18 22:42:11 +02:00
2016-09-22 16:03:23 +02:00
2021-05-08 17:39:13 +02:00
## Quick start
2016-09-18 22:42:11 +02:00
2021-05-08 17:39:13 +02:00
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:
2016-12-15 01:45:31 +01:00
2021-05-08 17:39:13 +02:00
$ watchexec -e js,css,html npm run build
2016-12-15 01:45:31 +01:00
Call/restart `python server.py` when any Python file in the current directory (and all subdirectories) changes:
2021-05-08 17:39:13 +02:00
$ watchexec -r -e py -- python server.py
2019-10-28 02:51:04 +01:00
2021-05-08 17:39:13 +02:00
More usage examples: [in the CLI README](./cli/#usage-examples)!
2020-10-01 23:23:07 +02:00
2019-10-28 02:51:04 +01:00
2021-05-08 17:39:13 +02:00
## Install
2021-07-21 14:13:59 +02:00
- As pre-built binary package: https://watchexec.github.io/downloads/
2021-05-08 17:39:13 +02:00
- With your package manager for Arch, Homebrew, Nix, Scoop, Chocolatey…
- From source with Cargo: `cargo install watchexec-cli`
2019-04-17 12:16:35 +02:00
2021-05-08 17:39:13 +02:00
All options in detail: [in the CLI README](./cli/#installation).
2019-04-17 12:16:35 +02:00
2021-05-08 17:39:13 +02:00
## Extend
2016-09-18 22:42:11 +02:00
2021-05-08 17:39:13 +02:00
- [watchexec library](./lib/): to create more specialised watchexec-powered tools! such as:
2021-06-28 15:15:00 +02:00
- [cargo watch](https://github.com/watchexec/cargo-watch): for Rust/Cargo projects.
2021-05-08 17:39:13 +02:00
- [clearscreen](https://github.com/watchexec/clearscreen): to clear the (terminal) screen on every platform.
2021-07-21 14:13:59 +02:00
- [command group](https://github.com/watchexec/command-group): to run commands in process groups.
- [notify](https://github.com/notify-rs/notify): to respond to file modifications (third-party).
2021-05-08 17:39:13 +02:00
- [globset](https://crates.io/crates/globset): to match globs (third-party).