diff options
Diffstat (limited to 'node_modules/webpack/lib/WatchIgnorePlugin.js')
-rw-r--r-- | node_modules/webpack/lib/WatchIgnorePlugin.js | 149 |
1 files changed, 100 insertions, 49 deletions
diff --git a/node_modules/webpack/lib/WatchIgnorePlugin.js b/node_modules/webpack/lib/WatchIgnorePlugin.js index 9b74b3c20..2f81ee839 100644 --- a/node_modules/webpack/lib/WatchIgnorePlugin.js +++ b/node_modules/webpack/lib/WatchIgnorePlugin.js @@ -1,49 +1,100 @@ -/*
- 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);
- }
-}
+/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const validateOptions = require("schema-utils"); +const schema = require("../schemas/plugins/WatchIgnorePlugin.json"); + +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); + + const watcher = this.wfs.watch( + files.filter(notIgnored), + dirs.filter(notIgnored), + missing, + startTime, + options, + ( + err, + filesModified, + dirsModified, + missingModified, + fileTimestamps, + dirTimestamps + ) => { + if (err) return callback(err); + + for (const path of ignoredFiles) { + fileTimestamps.set(path, 1); + } + + for (const path of ignoredDirs) { + dirTimestamps.set(path, 1); + } + + callback( + err, + filesModified, + dirsModified, + missingModified, + fileTimestamps, + dirTimestamps + ); + }, + callbackUndelayed + ); + + return { + close: () => watcher.close(), + pause: () => watcher.pause(), + getContextTimestamps: () => { + const dirTimestamps = watcher.getContextTimestamps(); + for (const path of ignoredDirs) { + dirTimestamps.set(path, 1); + } + return dirTimestamps; + }, + getFileTimestamps: () => { + const fileTimestamps = watcher.getFileTimestamps(); + for (const path of ignoredFiles) { + fileTimestamps.set(path, 1); + } + return fileTimestamps; + } + }; + } +} + +class WatchIgnorePlugin { + constructor(paths) { + validateOptions(schema, paths, "Watch Ignore Plugin"); + this.paths = paths; + } + + apply(compiler) { + compiler.hooks.afterEnvironment.tap("WatchIgnorePlugin", () => { + compiler.watchFileSystem = new IgnoringWatchFileSystem( + compiler.watchFileSystem, + this.paths + ); + }); + } +} + +module.exports = WatchIgnorePlugin; |