GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - watchexec/watchexec: Executes commands in response to file modifications

BranchesTags
Open more actions menu

Latest commit

 

History

1,761 Commits
1,761 Commits

Folders and files

NameName
Last commit message
Last commit date
.cargo
.cargo
 
 
.github
.github
 
 
bin
bin
 
 
completions
completions
 
 
crates
crates
 
 
doc
doc
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.rustfmt.toml
.rustfmt.toml
 
 
CITATION.cff
CITATION.cff
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Cargo.lock
Cargo.lock
 
 
Cargo.toml
Cargo.toml
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
SAFETY.md
SAFETY.md
 
 
cliff.toml
cliff.toml
 
 
release-plz.toml
release-plz.toml
 
 

Repository files navigation

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

  • With your package manager for Arch, Debian, Homebrew, Nix, Scoop, Chocolatey…
  • From binary with Binstall: cargo binstall watchexec-cli
  • As pre-built binary package from Github
  • From source with Cargo: cargo install --locked watchexec-cli

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

  • watchexec library: to create more specialised watchexec-powered tools.
    • watchexec-events: event types for watchexec.
    • watchexec-signals: signal types for watchexec.
    • watchexec-supervisor: process lifecycle manager (the exec part of watchexec).
  • clearscreen: to clear the (terminal) screen on every platform.
  • process wrap: 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).

Downstreams

Selected downstreams of watchexec and associated crates:

  • cargo watch: a specialised watcher for Rust/Cargo projects.
  • cargo lambda: a dev tool for Rust-powered AWS Lambda functions.
  • create-rust-app: a template for Rust+React web apps.
  • devenv.sh: a developer environment with nix-based declarative configs.
  • dotter: a dotfile manager.
  • ghciwatch: a specialised watcher for Haskell projects.
  • tectonic: a TeX/LaTeX typesetting system.

About

Executes commands in response to file modifications

watchexec.github.io

Topics

command-linedeveloper-toolsfile-watcherslinuxmacosrustwindows

Resources

Readme
Apache-2.0 license

Contributing

Contributing
Activity
Custom properties

Stars

7.3k stars

Watchers

27 watching

Forks

208 forks
Report repository

Releases

Sponsor this project

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.