watch-tree-maintained

Yet another library for watching FS trees. Includes a JSON-on-stdout command-line tool and {filePreexisted,allPreexistingFilesReported} events.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
watch-tree-maintained
39100.1.211 years ago11 years agoMinified + gzip package size for watch-tree-maintained in KB

Readme

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 relativepath
[--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

<tr>
    <th>Event</th>
    <th>Callback Arguments</th>
</tr>
<tr>
    <td>filePreexisted</td>
    <td>path, stats</td>
</tr>
<tr>
    <td>allPreexistingFilesReported</td>
    <td></td>
</tr>
<tr>
    <td>fileCreated</td>
    <td>path, stats</td>
</tr>
<tr>
    <td>fileModified</td>
    <td>path, stats</td>
</tr>
<tr>
    <td>fileDeleted</td>
    <td>path</td>
</tr>

...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