Sha256: 1acb28a6ed7b3d697ed114bb017628569c517bdfdfcabbbbe6b859e95a45caf4

Contents?: true

Size: 1.83 KB

Versions: 62

Compression:

Stored size: 1.83 KB

Contents

# 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 `DirectoryWatchers` from a `WatcherManager`, which ensures that only a single `DirectoryWatcher` per directory is created.
* A `FileWatcher` can be obtained from a `DirectoryWatcher` and provides a filtered view on the `DirectoryWatcher`.
* Reference-counting is used on the `DirectoryWatcher` and `FileWatcher` to 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.

## API

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

var wp = new Watchpack({
	// options:
	aggregateTimeout: 1000
	// fire "aggregated" event when after a change for 1000ms no additonal change occured
});

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

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

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
smock-0.1.246 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.245 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.244 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.243 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.242 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.241 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.240 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.239 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.2 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.1 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.238 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.237 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.236 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.235 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.234 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.233 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.232 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.231 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.230 node_modules/webpack/node_modules/watchpack/README.md
smock-0.1.229 node_modules/webpack/node_modules/watchpack/README.md