Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Recursive for watching entire directory trees
Fetching latest commit...
Cannot retrieve the latest commit at this time.


Build status

Please note! This package is outdated and not actively maintained. I would suggest looking at or

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

watchTree(dir, callback)

Watches directory dir recursively for changes.

The callback is called with an event object. The event is described below.

watchTree(dir, options, callback)

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.

Something went wrong with that request. Please try again.