Package Exports
- watchpack
- watchpack/lib/DirectoryWatcher
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (watchpack) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
watchpack
Wrapper library for directory and file watching.
Concept
watchpack high level API don'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
DirectoryWatchersfrom aWatcherManager, which ensures that only a singleDirectoryWatcherper directory is created. - A user-faced
Watchercan be obtained from aDirectoryWatcherand provides a filtered view on theDirectoryWatcher. - Reference-counting is used on the
DirectoryWatcherandWatcherto decide when to close them. - The real watchers (currently chokidar) are created by the
DirectoryWatcher. - 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.
API
var Watchpack = require("watchpack");
var wp = new Watchpack({
// options:
aggregateTimeout: 1000
// fire "aggregated" event when after a change for 1000ms no additonal change occured
// aggregated defaults to undefined, which doesn't fire an "aggregated" event
poll: 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 path
});
// Watchpack.prototype.watch(string[] files, string[] directories, [number startTime])
wp.watch(listOfFiles, listOfDirectories, Date.now() - 10000);
// starts watching these files and directories
// calling this again will override the files and directories
wp.on("change", function(filePath, mtime) {
// filePath: the changed file
// mtime: last modified time for the changed file
});
wp.on("aggregated", function(changes) {
// changes: an array of all changed files
});
// Watchpack.prototype.pause()
wp.pause();
// stops emitting events, but keeps watchers open
// next "watch" call can reuse the watchers
// Watchpack.prototype.close()
wp.close();
// stops emitting events and closes all watchers
// Watchpack.prototype.getTimes()
var fileTimes = wp.getTimes();
// 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