A simple recursive directory watcher.
Most watchers do not seem to care about the recursive
option of Node's fs.watch()
, 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. - Modern API without callbacks.
Usage:
simple-watcher path1 [path2 path3 ...]
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}`)
}