update watchexec cheat sheet
authorAJ ONeal <aj@therootcompany.com>
Thu, 1 Oct 2020 21:02:43 +0000 (21:02 +0000)
committerAJ ONeal <aj@therootcompany.com>
Mon, 5 Oct 2020 22:08:00 +0000 (22:08 +0000)
watchexec/README.md

index 809e9d948567511c82aef503713bc9d2e83deaf7..59599fedcce4df8b2be17d1ba453f8254f3e81d0 100644 (file)
@@ -13,22 +13,72 @@ Use the `@beta` tag for pre-releases.
 
 ## Cheat Sheet
 
-Watch all JavaScript, CSS and HTML files in the current directory and all
-subdirectories for changes, running `make` when a change is detected:
+`watchexec` runs a given command when any files in watched directories change. \
+It respects `.[git]ignore`.
+
+The full `--help` detailed and very useful. Here's the shortlist of what I find
+most useful:
+
+```txt
+-w, --watch     ./src/          watch the given directory
+-e, --exts      js,html,css     watch only the given extensions
+-i, --ignore    '*.md'          do not watch the given pattern
+-d, --debounce  5000            the minimum number of milleseconds
+                                    to wait between changes
+
+-r, --restart                   restart the process (for servers and such)
+-s, --signal    SIGHUP          like -r, but with a signal (ex: SIGHUP)
+-c, --clear                     clear the screen between command runs
+-W  (wait)                      ignore all changes while the command runs
+
+--              npm start       what command to run, which its arguments
+
+--no-ignore                     disregard both .ignore and .gitignore
+--no-vcs-ignore                 disregard only .gitignore
+--no-default-ignore             disregard built-in ignore lists
+```
+
+### How to use
+
+Example: List the directory when any files change.
 
 ```bash
-watchexec --exts js,css,html make
+watchexec -c -- ls -lah
 ```
 
-Call `make test` when any file changes in this directory/subdirectory, except
-for everything below `target`:
+### Advanced Usage Example
+
+Here's a "kitchen sink" example.
 
 ```bash
-watchexec -i target make test
+watchexec -c -r -s SIGKILL -d 2000 -W --verbose \
+    -w ./src -w ./lib -w ./server.js \
+    -e ts,js,sass,css,html \
+    -i '.git' '*.min.js' -i '*.min.css' \
+    -- npm run build
 ```
 
-Call `ls -la` when any file changes in this directory/subdirectory:
+### How to use (Node, Go, Rust, rsync)
+
+These examples show how you might use this for builds, servers, and publishing
+or deploying.
 
 ```bash
-watchexec -- ls -la
+# Node / npm
+watchexec -W -- npm run build
+watchexec -r -- npm start
+
+# Golang
+watchexec -- go build .
+watchexec -r -- go run .
+
+# Rust
+watchexec -- cargo build --bin
+watchexec -r -- cargo run --bin
+
+# rsync (local copy)
+watchexec -- rsync -avhP ./ ./srv/MY_PROJECT/
+
+# rsync (remote publish)
+watchexec -- rsync -avhP ./ app@example.com:~/srv/MY_PROJECT/
 ```