Sane aims to be fast, small, and reliable file system watcher.
I've been driven to insanity by node filesystem watcher wrappers. Sane aims to be fast, small, and reliable file system watcher. It does that by:
fs.watch by default and sensibly works around the various issuesfs.watch is not reliable you have the choice of using the following alternatives:
$ npm install sane
Don't worry too much about choosing the correct mode upfront because sane maintains the same API across all modes and will be easy to switch.
watchman would be the most reliable modewatchmanWatches a directory and all it's descendant directories for changes, deletions, and additions on files and directories.
var watcher = sane'path/to/dir' glob: '**/*.js' '**/*.css';watcheron'ready' console.log'ready' ;watcheron'change' console.log'file changed' filepath; ;watcheron'add' console.log'file added' filepath; ;watcheron'delete' console.log'file deleted' filepath; ;// close watcherclose;
options:
glob: a single string glob pattern or an array of them.poll: puts the watcher in polling mode. Under the hood that means fs.watchFile.watchman: makes the watcher use watchman.dot: enables watching files/directories that start with a dot.For the glob pattern documentation, see minimatch.
If you choose to use watchman you'll have to install watchman yourself).
The default watcher class. Uses fs.watch under the hood, and takes the same options as sane(options, dir).
The watchman watcher class. Takes the same options as sane(options, dir).
The polling watcher class. Takes the same options as sane(options, dir) with the addition of:
Stops watching.
Emits the following events:
All events are passed the file/dir path relative to the root directory
ready when the program is ready to detect events in the directorychange when a file changesadd when a file or directory has been addeddelete when a file or directory has been deletedThis module includes a simple command line interface, which you can install with npm install sane -g.
Usage: sane <command> [...directory] [--glob=<filePattern>] [--poll] [--watchman] [--dot] [--wait=<seconds>] OPTIONS: --glob=<filePattern> A single string glob pattern or an array of them. --poll, -p Use polling mode. --watchman, -w Use watchman (if available). --dot, -d Enables watching files/directories that start with a dot. --wait=<seconds> Duration, in seconds, that watching will be disabled after running <command>. Setting this option will throttle calls to <command> for the specified duration.
It will watch the given directory and run the given every time a file changes.
sane 'echo "A command ran"'sane 'echo "A command ran"' --glob='**/*.css'sane 'echo "A command ran"' site/assets/css --glob='**/*.css'sane 'echo "A command ran"' --wait=3sane 'echo "A command ran"' -pMIT
The CLI was originally based on the watch CLI. Watch is licensed under the Apache License Version 2.0.