Wrapper library for directory and file watching.
watchpack high level API doesn't map directly to watchers. Instead a three level architecture ensures that for each directory only a single watcher exists.
- The high level API requests
WatcherManager, which ensures that only a single
DirectoryWatcherper directory is created.
- A user-faced
Watchercan be obtained from a
DirectoryWatcherand provides a filtered view on the
- Reference-counting is used on the
Watcherto decide when to close them.
- The real watchers (currently chokidar) are created by the
- Files are never watched directly. This should keep the watcher count low.
- Watching can be started in the past. This way watching can start after file reading.
- Symlinks are not followed, instead the symlink is watched.
var Watchpack = ;var wp =// options:aggregateTimeout: 1000// fire "aggregated" event when after a change for 1000ms no additional change occurred// aggregated defaults to undefined, which doesn't fire an "aggregated" eventpoll: true// poll: true - use polling with the default interval// poll: 10000 - use polling with an interval of 10s// poll defaults to undefined, which prefer native watching methods// Note: enable polling when watching on a network pathignored: /node_modules/// anymatch-compatible definition of files/paths to be ignored// see;// Watchpack.prototype.watch(string files, string directories, [number startTime])wp;// starts watching these files and directories// calling this again will override the files and directorieswp;wp;// Watchpack.prototype.pause()wp;// stops emitting events, but keeps watchers open// next "watch" call can reuse the watchers// Watchpack.prototype.close()wp;// stops emitting events and closes all watchers// Watchpack.prototype.getTimes()var fileTimes = wp;// returns an object with all know change times for files// this include timestamps from files not directly watched// key: absolute path, value: timestamp as number