tiny-watcher
Version:
A tiny wrapper around fs.watch for added, removed and changed events
92 lines (68 loc) • 2.27 kB
Markdown
There is no such thing as [fs.watch](http://nodejs.org/docs/latest/api/fs.html#fs_fs_watch_filename_options_listener) and this is a wrapper around it. Another one. Yep, there are lots of wrappers and I tried a couple for my project but found that they were all buggy in their own idiosyncratic ways. I needed one that was buggy in a specific way, so I coded up tiny-wrapper.
```javascript
var tiny = require('../.')
, fs = require('fs')
, rimraf = require('rimraf')
, path = require('path')
var somedir = "somedir"
fs.mkdirSync(somedir)
var watcher = tiny(somedir, ["test", "total"])
watcher.on("added", function (file) {
console.log("EXAMPLE: added", file)
})
watcher.on("removed", function (file) {
console.log("EXAMPLE: removed", file)
})
watcher.on("changed", function (file) {
console.log("EXAMPLE: changed", file)
})
// ADD TEST
fs.writeFileSync(path.join(somedir, "test"), "data")
// REMOVE TEST
fs.unlinkSync(path.join(somedir, "test"))
// ADD TOTAL
fs.writeFileSync(path.join(somedir, "total"), "data")
// CHANGE TOTAL
fs.writeFileSync(path.join(somedir, "total"), "new data")
// ADD TONNES (NOT IN SPECIFIED FILE LIST)
fs.writeFileSync(path.join(somedir, "tonnes"), "data")
/*
* Setting watcher kill should stop the remove event
* when total is removed with rimraf
*/
setTimeout( function () {
watcher.close()
rimraf(somedir, function (err) {
if (err) throw err
process.exit()
})
}, 1000)
```
which produces
```shell
EXAMPLE: added test
EXAMPLE: removed test
EXAMPLE: added total
EXAMPLE: changed total
```
The main object is a function that produces watchers for a specific directory an optional set of files.
```javascript
var watcher = tiny("path/to/dir" [, ["list", "of", "files"]])
```
Three events, `added`, `removed` and `changed` are supported. The callback returns the filename.
Cycle through all the files being monitored by the tiny-watcher instance and emit `event` events for each one.
Useful for on-startup tasks.
Calls the base fs method [watcher.close()](http://nodejs.org/docs/latest/api/fs.html#fs_watcher_close)
```shell
npm install tiny-watcher
```
MIT