Cross-platform file system change monitoring for Node.js
Wait, wait, how's it different from fs.watch
? Unlike fs.watch
, fsmonitor:
fs.watch
only monitors a single folder)Here's what happens when you call fsmonitor.watch(path)
:
fs.watch
is called to start monitoring every subfolder encountered.fs.watch
is called for the new subfolders, and the watchers are shut down for the removed ones.Alpha stage. Seems to work, waiting for feedback, shipping as part of LiveReload 0.5 for Windows.
Planned features:
npm install fsmonitor
or, to use fsmonitor command-line tool (see below):
npm install -g fsmonitor
fsmonitor = require('fsmonitor');
fsmonitor.watch('/some/folder', null, function(change) {
console.log("Change detected:\n" + change); # has a nice toString
console.log("Added files: %j", change.addedFiles);
console.log("Modified files: %j", change.modifiedFiles);
console.log("Removed files: %j", change.removedFiles);
console.log("Added folders: %j", change.addedFolders);
console.log("Modified folders: %j", change.modifiedFolders);
console.log("Removed folders: %j", change.removedFolders);
});
var monitor = fsmonitor.watch('.', {
// include files
matches: function(relpath) {
return relpath.match(/\.js$/i) !== null;
},
// exclude directories
excludes: function(relpath) {
return relpath.match(/^\.git$/i) !== null;
}
});
monitor.on('change', function(changes) {
console.log(changes);
});
Includes a command-line tool that can report changes and/or run a specified command on every change.
For example, to invoke npm test
when any JavaScript file is modified:
fsmonitor -s -p '+*.js' npm test
Usage:
Usage: fsmonitor [-d <folder>] [-p] [-s] [-q] [<mask>]... [<command> <arg>...]
Options:
-d <folder> Specify the folder to monitor (defaults to the current folder)
-p Print changes to console (default if no command specified)
-s Run the provided command once on start up
-q Quiet mode (don't print the initial banner)
Masks:
+<mask> Include only the files matching the given mask
!<mask> Exclude files matching the given mask
If no inclusion masks are provided, all files not explicitly excluded will be included.
General options:
--help Display this message
--version Display fsmonitor version number
Install necessary modules:
npm install
Start npm test
to run the unit tests:
npm test