Please note! This package is outdated and not actively maintained. I would suggest looking at http://github.com/shama/gaze or https://github.com/paulmillr/chokidar.
fs-watch-tree is a small tool to watch directories for changes recursively. It uses fs-watch to watch for changes, thus should work on most platforms.
var watchTree = require("fs-watch-tree").watchTree;
var watch = watchTree("/home/christian", function (event) {
// See description of event below
});
watch.end(); // Release watch
watch = watchTree("/home/christian", {
exclude: ["node_modules", "~", "#", /^\./]
}, function (event) {
// Respond to change
});
Watches directory dir
recursively for changes.
The callback is called with an event
object. The event is described below.
Watch a directory recursively, with some specific options. Currently, you can only specify a single option:
{ exclude: [] }
The exclude
array specifies file patterns to exclude from watches. If a
pattern matches a directory, watch-tree
will not recurse into it. If it
matches a file, changes to that file will not trigger an event.
The excludes can be either strings or regular expressions, but are always treated as regular expressions. That means that
{ exclude: [".git", "node_modules"] }
Will be treated the same way as:
{ exclude: [new RegExp(".git"), new RegExp("node_modules")] }
If you only want to exclude specific files, be sure to provide full
paths. watch-tree
does not expand paths, it will resolve all paths relative to
the original directory. So this:
watchFile(".git", function (event) { /* ... *) });
Will watch (and consider excludes for) directories like .git/branches
. And
this:
watchFile("/home/christian/projects/watch-tree/.git", function (event) {});
Will watch (and consider excludes for) directories like
/home/christian/projects/watch-tree/.git
.
The event object has the following properties:
The full (relative) path to the file/directory that changed.
Returns true if the cause of the change was a directory. In some cases, e.g. when the directory was deleted, it's not possible to know if the source was a directory. In that case, this method returns false.
Returns true if the cause of the event was a newly created directory.
Returns true if the cause of the event was a deleted file/directory.
Returns true if the cause of the event was a modified file/directory.