aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/CachePlugin.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
committerFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
commitbbff7403fbf46f9ad92240ac213df8d30ef31b64 (patch)
treec58400ec5124da1c7d56b01aea83309f80a56c3b /node_modules/webpack/lib/CachePlugin.js
parent003fb34971cf63466184351b4db5f7c67df4f444 (diff)
update packages
Diffstat (limited to 'node_modules/webpack/lib/CachePlugin.js')
-rw-r--r--node_modules/webpack/lib/CachePlugin.js197
1 files changed, 102 insertions, 95 deletions
diff --git a/node_modules/webpack/lib/CachePlugin.js b/node_modules/webpack/lib/CachePlugin.js
index 9c19b8140..0d1650be9 100644
--- a/node_modules/webpack/lib/CachePlugin.js
+++ b/node_modules/webpack/lib/CachePlugin.js
@@ -1,95 +1,102 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-"use strict";
-
-const asyncLib = require("async");
-
-class CachePlugin {
- constructor(cache) {
- this.cache = cache || {};
- this.FS_ACCURENCY = 2000;
- }
-
- apply(compiler) {
- if(Array.isArray(compiler.compilers)) {
- compiler.compilers.forEach((c, idx) => {
- c.apply(new CachePlugin(this.cache[idx] = this.cache[idx] || {}));
- });
- } else {
- const registerCacheToCompiler = (compiler, cache) => {
- compiler.plugin("this-compilation", compilation => {
- // TODO remove notCacheable for webpack 4
- if(!compilation.notCacheable) {
- compilation.cache = cache;
- compilation.plugin("child-compiler", (childCompiler, compilerName, compilerIndex) => {
- if(cache) {
- let childCache;
- if(!cache.children) cache.children = {};
- if(!cache.children[compilerName]) cache.children[compilerName] = [];
- if(cache.children[compilerName][compilerIndex])
- childCache = cache.children[compilerName][compilerIndex];
- else
- cache.children[compilerName].push(childCache = {});
- registerCacheToCompiler(childCompiler, childCache);
- }
- });
- } else if(this.watching) {
- compilation.warnings.push(
- new Error(`CachePlugin - Cache cannot be used because of: ${compilation.notCacheable}`)
- );
- }
- });
- };
- registerCacheToCompiler(compiler, this.cache);
- compiler.plugin("watch-run", (compiler, callback) => {
- this.watching = true;
- callback();
- });
- compiler.plugin("run", (compiler, callback) => {
- if(!compiler._lastCompilationFileDependencies) return callback();
- const fs = compiler.inputFileSystem;
- const fileTs = compiler.fileTimestamps = {};
- asyncLib.forEach(compiler._lastCompilationFileDependencies, (file, callback) => {
- fs.stat(file, (err, stat) => {
- if(err) {
- if(err.code === "ENOENT") return callback();
- return callback(err);
- }
-
- if(stat.mtime)
- this.applyMtime(+stat.mtime);
-
- fileTs[file] = +stat.mtime || Infinity;
- callback();
- });
- }, err => {
- if(err) return callback(err);
- Object.keys(fileTs).forEach(key => {
- fileTs[key] += this.FS_ACCURENCY;
- });
- callback();
- });
- });
- compiler.plugin("after-compile", function(compilation, callback) {
- compilation.compiler._lastCompilationFileDependencies = compilation.fileDependencies;
- compilation.compiler._lastCompilationContextDependencies = compilation.contextDependencies;
- callback();
- });
- }
- }
-
- /* istanbul ignore next */
- applyMtime(mtime) {
- if(this.FS_ACCURENCY > 1 && mtime % 2 !== 0)
- this.FS_ACCURENCY = 1;
- else if(this.FS_ACCURENCY > 10 && mtime % 20 !== 0)
- this.FS_ACCURENCY = 10;
- else if(this.FS_ACCURENCY > 100 && mtime % 200 !== 0)
- this.FS_ACCURENCY = 100;
- else if(this.FS_ACCURENCY > 1000 && mtime % 2000 !== 0)
- this.FS_ACCURENCY = 1000;
- }
-}
-module.exports = CachePlugin;
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const asyncLib = require("neo-async");
+
+class CachePlugin {
+ constructor(cache) {
+ this.cache = cache || {};
+ this.FS_ACCURACY = 2000;
+ }
+
+ apply(compiler) {
+ if (Array.isArray(compiler.compilers)) {
+ compiler.compilers.forEach((c, idx) => {
+ new CachePlugin((this.cache[idx] = this.cache[idx] || {})).apply(c);
+ });
+ } else {
+ const registerCacheToCompiler = (compiler, cache) => {
+ compiler.hooks.thisCompilation.tap("CachePlugin", compilation => {
+ compilation.cache = cache;
+ compilation.hooks.childCompiler.tap(
+ "CachePlugin",
+ (childCompiler, compilerName, compilerIndex) => {
+ if (cache) {
+ let childCache;
+ if (!cache.children) {
+ cache.children = {};
+ }
+ if (!cache.children[compilerName]) {
+ cache.children[compilerName] = [];
+ }
+ if (cache.children[compilerName][compilerIndex]) {
+ childCache = cache.children[compilerName][compilerIndex];
+ } else {
+ cache.children[compilerName].push((childCache = {}));
+ }
+ registerCacheToCompiler(childCompiler, childCache);
+ }
+ }
+ );
+ });
+ };
+ registerCacheToCompiler(compiler, this.cache);
+ compiler.hooks.watchRun.tap("CachePlugin", () => {
+ this.watching = true;
+ });
+ compiler.hooks.run.tapAsync("CachePlugin", (compiler, callback) => {
+ if (!compiler._lastCompilationFileDependencies) {
+ return callback();
+ }
+ const fs = compiler.inputFileSystem;
+ const fileTs = (compiler.fileTimestamps = new Map());
+ asyncLib.forEach(
+ compiler._lastCompilationFileDependencies,
+ (file, callback) => {
+ fs.stat(file, (err, stat) => {
+ if (err) {
+ if (err.code === "ENOENT") return callback();
+ return callback(err);
+ }
+
+ if (stat.mtime) this.applyMtime(+stat.mtime);
+
+ fileTs.set(file, +stat.mtime || Infinity);
+
+ callback();
+ });
+ },
+ err => {
+ if (err) return callback(err);
+
+ for (const [file, ts] of fileTs) {
+ fileTs.set(file, ts + this.FS_ACCURACY);
+ }
+
+ callback();
+ }
+ );
+ });
+ compiler.hooks.afterCompile.tap("CachePlugin", compilation => {
+ compilation.compiler._lastCompilationFileDependencies =
+ compilation.fileDependencies;
+ compilation.compiler._lastCompilationContextDependencies =
+ compilation.contextDependencies;
+ });
+ }
+ }
+
+ /* istanbul ignore next */
+ applyMtime(mtime) {
+ if (this.FS_ACCURACY > 1 && mtime % 2 !== 0) this.FS_ACCURACY = 1;
+ else if (this.FS_ACCURACY > 10 && mtime % 20 !== 0) this.FS_ACCURACY = 10;
+ else if (this.FS_ACCURACY > 100 && mtime % 200 !== 0)
+ this.FS_ACCURACY = 100;
+ else if (this.FS_ACCURACY > 1000 && mtime % 2000 !== 0)
+ this.FS_ACCURACY = 1000;
+ }
+}
+module.exports = CachePlugin;