simple-watcher
Version:
"A simple file s watcher."
43 lines (30 loc) • 1.33 kB
Markdown
# Simple Watcher
A simple recursive directory watcher.
## But why?
Most watchers do not seem to care about the `recursive` option of Node's [`fs.watch()`](https://nodejs.org/docs/latest/api/fs.html#fs_fs_watch_filename_options_listener), which **significantly** improves performance on the supported platforms, especially for large directories.
Features:
* Simple, fast and lightweight.
* No dependencies.
* Leverages the `recursive` option on OS X and Windows for improved performance; uses a fallback for other platforms.
* Takes care of WinAPI's `ReadDirectoryChangesW` [double reporting](http://stackoverflow.com/questions/14036449/c-winapi-readdirectorychangesw-receiving-double-notifications).
* Modern API without callbacks.
## Usage
### Command line
```
Usage:
simple-watcher path1 [path2 path3 ...]
```
### JavaScript
```JavaScript
import watch from 'simple-watcher'
// Optional: abort the watcher after 10 seconds.
const ac = new AbortController()
setTimeout(() => ac.abort(), 10000)
// Watch over file or directory.
for await (const changedPath of watch('/path/to/foo'), { signal: ac.signal }) {
console.log(`Changed: ${filePath}`)
}
// Watch over multiple paths.
for await (const changedPath of watch(['/path/to/bar', '/path/to/baz']), { signal: ac.signal }) {
console.log(`Changed: ${filePath}`)
}