...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.
npm install watch-tree
watch-tree [[relative_]path]
[--ignore=(...regex...)]
[--match=(...regex...)]
[--sample-rate=(...ms...)]
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"]
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 + "!");
});
| Event | Callback Arguments |
|---|---|
| filePreexisted | path, stats |
| allPreexistingFilesReported | |
| fileCreated | path, stats |
| fileModified | path, stats |
| fileDeleted | path |
...where stats is a NodeJS fs.Stats instance.
# 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