Ultra-fast cross-platform command line utility to watch file system changes.
The underlying watch library is Chokidar, which is one of the best watch utilities for Node. Chokidar is battle-tested:
It is used in brunch, karma, PM2, browserify, webpack, BrowserSync, socketstream, derby, and many others. It has proven itself in production environments.
If you need it only with NPM scripts:
npm install chokidar-cli
Or globally
npm install -g chokidar-cli
By default chokidar
streams changes for all patterns to stdout:
$ chokidar '**/.js' '**/*.less'
change:test/dir/a.js
change:test/dir/a.less
add:test/b.js
unlink:test/b.js
Each change is represented with format event:relativepath
. Possible events: add
, unlink
, addDir
, unlinkDir
, change
.
Output only relative paths on each change
$ chokidar '**/.js' '**/*.less' | cut -d ':' -f 2-
test/dir/a.js
test/dir/a.less
test/b.js
test/b.js
Run npm run build-js whenever any .js file changes in the current work directory tree
chokidar '**/*.js' -c 'npm run build-js'
Watching in network directories must use polling
chokidar '**/*.less' -c 'npm run build-less' --polling
Detailed help
Usage: chokidar <pattern> [<pattern>...] [options]
<pattern>:
Glob pattern to specify files to be watched.
Multiple patterns can be watched by separating patterns with spaces.
To prevent shell globbing, write pattern inside quotes.
Guide to globs: https://github.com/isaacs/node-glob#glob-primer
Options:
-c, --command Command to run after each change. Needs to be
surrounded with quotes when command contains spaces
-d, --debounce Debounce timeout in ms for executing command
[default: 400]
-s, --follow-symlinks When not set, only the symlinks themselves will be
watched for changes instead of following the link
references and bubbling events through the links path
[boolean] [default: false]
-i, --ignore Pattern for files which should be ignored. Needs to
be surrounded with quotes to prevent shell globbing.
The whole relative or absolute path is tested, not
just filename
--initial When set, command is initially run once
[boolean] [default: false]
-p, --polling Whether to use fs.watchFile(backed by polling)
instead of fs.watch. This might lead to high CPU
utilization. It is typically necessary to set this to
true to successfully watch files over a network, and
it may be necessary to successfully watch files in
other non-standard situations
[boolean] [default: false]
--poll-interval Interval of file system polling. Effective when
--polling is set [default: 100]
--poll-interval-binary Interval of file system polling for binary files.
Effective when --polling is set [default: 300]
--verbose When set, output is more verbose and human readable.
[boolean] [default: false]
-h, --help Show help
-v, --version Show version number
Examples:
chokidar "**/*.js" -c "npm run build-js" build when any .js file changes
chokidar "**/*.js" "**/*.less" output changes of .js and .less
files
MIT