aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/WatchIgnorePlugin.js
diff options
context:
space:
mode:
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);
+ }
+}