watchpack

Wrapper library for directory and file watching.

Build Status Build status Test coverage

Concept

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.

API

``` javascript var Watchpack = require("watchpack");

var wp = new Watchpack({ // 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" 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

ignored: /node_modules/,
// anymatch-compatible definition of files/paths to be ignored
// see https://github.com/paulmillr/chokidar#path-filtering

});

// 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 ```