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:
- By default stays away from fs polling because it's very slow and cpu intensive
fs.watchby default and sensibly works around the various issues
- Maintains a consistent API across different platforms
fs.watchis not reliable you have the choice of using the following alternatives:
- the facebook watchman library
$ 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.
- If you're only supporting Linux and OS X,
watchmanwould be the most reliable mode
- If you're using node > v0.10.0 use the default mode
- If you're running OS X and you're watching a lot of directories and you're running into https://github.com/joyent/node/issues/5463, use
- If you're in an environment where native file system events aren't available (like Vagrant), you should use polling
- Otherwise, the default mode should work well for you
Watches 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; ;// closewatcherclose;
glob: a single string glob pattern or an array of them.
poll: puts the watcher in polling mode. Under the hood that means
watchman: makes the watcher use watchman
dot: enables watching files/directories that start with a dot.
The default watcher class. Uses
fs.watch under the hood, and takes the same options as
The watchman watcher class. Takes the same options as
The polling watcher class. Takes the same options as
sane(options, dir) with the addition of:
- interval: indicates how often the files should be polled. (passed to fs.watchFile)
Emits the following events:
All events are passed the file/dir path relative to the root directory
readywhen the program is ready to detect events in the directory
changewhen a file changes
addwhen a file or directory has been added
deletewhen a file or directory has been deleted