aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/WatchIgnorePlugin.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
commitde98e0b232509d5f40c135d540a70e415272ff85 (patch)
treea79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/webpack/lib/WatchIgnorePlugin.js
parente0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff)
node_modules
Diffstat (limited to 'node_modules/webpack/lib/WatchIgnorePlugin.js')
-rw-r--r--node_modules/webpack/lib/WatchIgnorePlugin.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/WatchIgnorePlugin.js b/node_modules/webpack/lib/WatchIgnorePlugin.js
new file mode 100644
index 000000000..9b74b3c20
--- /dev/null
+++ b/node_modules/webpack/lib/WatchIgnorePlugin.js
@@ -0,0 +1,49 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+class WatchIgnorePlugin {
+ constructor(paths) {
+ this.paths = paths;
+ }
+
+ apply(compiler) {
+ compiler.plugin("after-environment", () => {
+ compiler.watchFileSystem = new IgnoringWatchFileSystem(compiler.watchFileSystem, this.paths);
+ });
+ }
+}
+
+module.exports = WatchIgnorePlugin;
+
+class IgnoringWatchFileSystem {
+ constructor(wfs, paths) {
+ this.wfs = wfs;
+ this.paths = paths;
+ }
+
+ watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
+ const ignored = path => this.paths.some(p => p instanceof RegExp ? p.test(path) : path.indexOf(p) === 0);
+
+ const notIgnored = path => !ignored(path);
+
+ const ignoredFiles = files.filter(ignored);
+ const ignoredDirs = dirs.filter(ignored);
+
+ this.wfs.watch(files.filter(notIgnored), dirs.filter(notIgnored), missing, startTime, options, (err, filesModified, dirsModified, missingModified, fileTimestamps, dirTimestamps) => {
+ if(err) return callback(err);
+
+ ignoredFiles.forEach(path => {
+ fileTimestamps[path] = 1;
+ });
+
+ ignoredDirs.forEach(path => {
+ dirTimestamps[path] = 1;
+ });
+
+ callback(err, filesModified, dirsModified, missingModified, fileTimestamps, dirTimestamps);
+ }, callbackUndelayed);
+ }
+}