Package Exports
- node-watch
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-watch) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
node-watch 
A neat fs.watch wrapper.
Installation
npm install node-watch
Example
var watch = require('node-watch');
watch('somedir_or_somefile', { recursive: true }, function(evt, name) {
console.log(name, ' changed.');
});
This is a completely rewritten version, much faster and in a more memory-efficient way. So with recent nodejs versions under OS X or Windows you can do something like this:
// watch the whole disk
watch('/', { recursive: true }, console.log);
Why?
- Some editors will generate temporary files which will cause the callback function to be triggered multiple times.
- When watching a single file the callback function will only be triggered once.
Missing an option to watch a directory recursively.- Recursive watch is not supported on Linux or in older versions of nodejs.
Changelog
- The
recursive
option is default to befalse
since v0.5.0. - The callback function will always provide a event name since v0.5.0.
- Returns a fs.FSWatcher like object since v0.4.0.
Events
The events provided by the callback function would be either update
or remove
.
watch('./', function(evt, name) {
if (evt == 'remove') {
// on delete
}
if (evt == 'update') {
// on create or modify
}
});
Watcher object
watch
function returns a fs.FSWatcher like object as the same as fs.watch
(>= v0.4.0).
var watcher = watch('./', { recursive: true });
watcher.on('change', function(evt, name) {
// callback
});
watcher.on('error', function(err) {
// handle error
});
// close
watcher.close();
Extra options
filter
Filter files or directories or skip to watch them.
var options = {
recursive: true,
filter : function(name) {
return !/node_modules/.test(name);
}
};
// ignore node_modules
watch('./', options, console.log);
Known bugs
Windows, node < v4.2.5
- Failed to detect
remove
event - Failed to get deleted filename or directory name
Misc
1. Watch multiple files or directories in one place
watch(['file1', 'file2'], console.log);
2. Other ways to filter
a) filtering directly inside the callback function:
watch('./', { recursive: true }, function(evt, name) {
// ignore node_modules
if (!/node_modules/.test(name)) {
// do something
}
});
b) filtering with higher order function:
function filter(pattern, fn) {
return function(evt, name) {
if (pattern.test(name)) {
fn.apply(null, arguments);
}
}
}
// watch only for js files
watch('./', filter(/\.js$/, console.log));
License
Licensed under MIT
Copyright (c) 2012-2017 yuanchuan