/node-watch-tree

Yet another NodeJS library for watching FS trees

Primary LanguageCoffeeScriptMIT LicenseMIT

watch-tree

...is yet another NodeJS FS-watching library. If it happens to suit your needs better than the others, enjoy!

The current implementation maintains a ring of paths (both files and dirs), and stats the next one every (--sample-rate=) ms.

More efficient implementations will be added eventually, including inotify (for Linux) and FSEvents (for Mac), with the appropriate one being compiled at (npm install)-time.

Your code won't notice the difference when that happens, but your battery life might.

Installing

npm install watch-tree

Command-line tool

Usage

watch-tree [[relative_]path]
    [--ignore=(...regex...)]
    [--match=(...regex...)]
    [--sample-rate=(...ms...)]

Example

cd ~/repos/watch-tree; watch-tree '--ignore=/\.'

stdout:

...
["filePreexisted","/Users/a/repos/node-watch-tree/README.md","2011-01-14T18:34:56.000Z"]
["allPreexistingFilesReported"]
["fileModified","/Users/a/repos/node-watch-tree/README.md","2011-01-14T18:35:05.000Z"]
["fileCreated","/Users/a/repos/node-watch-tree/foo","2011-01-14T18:35:07.000Z"]
["fileDeleted","/Users/a/repos/node-watch-tree/foo"]

NodeJS

The watcher returned by .watchTree is a NodeJS EventEmitter instance.

watcher = require('watch-tree').watchTree(path, {'sample-rate': 5});
watcher.on('fileDeleted', function(path) {
    console.log("Quoth the walrus: Noooo, they're deleting mah " + path + "!");
});

Events

Event Callback Arguments
filePreexisted path, stats
allPreexistingFilesReported
fileCreated path, stats
fileModified path, stats
fileDeleted path

...where stats is a NodeJS fs.Stats instance.

Developing

# Install
git clone https://github.com/tafa/node-watch-tree.git; cd node-watch-tree
npm link

# Develop
coffee -cwlo lib src

# Push
cake build && cake test