From b01f378a085dbd0af5b7d502707ba06a6adaf9f1 Mon Sep 17 00:00:00 2001 From: Mohsen Azimi Date: Tue, 3 Jul 2018 16:57:16 -0700 Subject: [PATCH 01/41] Fix @template syntax error in Compilation.js iterationOfArrayCallback --- lib/Compilation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Compilation.js b/lib/Compilation.js index 3733f02943a..c1be909f17a 100644 --- a/lib/Compilation.js +++ b/lib/Compilation.js @@ -176,7 +176,7 @@ const iterationBlockVariable = (variables, fn) => { }; /** - * @template {T} + * @template T * @param {T[]} arr array of elements to iterate over * @param {function(T): void} fn callback applied to each element * @returns {void} From fb2c24bf766529266b589b8e967ff09c35e83794 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Wed, 4 Jul 2018 09:59:22 +0200 Subject: [PATCH 02/41] add `splitChunks.maxSize` option add `splitChunks.fallbackCacheGroup` add `splitChunks.hidePathInfo` move `contextify` into utils add some types --- lib/Chunk.js | 2 + lib/ContextModule.js | 18 +- lib/Module.js | 2 + lib/NormalModule.js | 24 +- lib/WebpackOptionsDefaulter.js | 3 + lib/optimize/SplitChunksPlugin.js | 136 +++++++++- lib/util/deterministicGrouping.js | 251 ++++++++++++++++++ lib/util/identifier.js | 27 ++ schemas/WebpackOptions.json | 38 ++- .../__snapshots__/StatsTestCases.test.js.snap | 133 ++++++++++ test/statsCases/split-chunks-max-size/big.js | 4 + .../in-some-directory/big.js | 4 + .../in-some-directory/small.js | 1 + .../in-some-directory/very-big.js | 24 ++ .../statsCases/split-chunks-max-size/index.js | 43 +++ .../split-chunks-max-size/inner-module/big.js | 4 + .../inner-module/small.js | 1 + .../inner-module/very-big.js | 24 ++ .../statsCases/split-chunks-max-size/small.js | 1 + .../split-chunks-max-size/subfolder/big.js | 4 + .../split-chunks-max-size/subfolder/small.js | 1 + .../subfolder/very-big.js | 24 ++ .../split-chunks-max-size/very-big.js | 24 ++ .../split-chunks-max-size/webpack.config.js | 46 ++++ 24 files changed, 799 insertions(+), 40 deletions(-) create mode 100644 lib/util/deterministicGrouping.js create mode 100644 test/statsCases/split-chunks-max-size/big.js create mode 100644 test/statsCases/split-chunks-max-size/in-some-directory/big.js create mode 100644 test/statsCases/split-chunks-max-size/in-some-directory/small.js create mode 100644 test/statsCases/split-chunks-max-size/in-some-directory/very-big.js create mode 100644 test/statsCases/split-chunks-max-size/index.js create mode 100644 test/statsCases/split-chunks-max-size/inner-module/big.js create mode 100644 test/statsCases/split-chunks-max-size/inner-module/small.js create mode 100644 test/statsCases/split-chunks-max-size/inner-module/very-big.js create mode 100644 test/statsCases/split-chunks-max-size/small.js create mode 100644 test/statsCases/split-chunks-max-size/subfolder/big.js create mode 100644 test/statsCases/split-chunks-max-size/subfolder/small.js create mode 100644 test/statsCases/split-chunks-max-size/subfolder/very-big.js create mode 100644 test/statsCases/split-chunks-max-size/very-big.js create mode 100644 test/statsCases/split-chunks-max-size/webpack.config.js diff --git a/lib/Chunk.js b/lib/Chunk.js index 46cd61d456c..7d9ad3a05c5 100644 --- a/lib/Chunk.js +++ b/lib/Chunk.js @@ -121,6 +121,8 @@ class Chunk { this.entryModule = undefined; /** @private @type {SortableSet} */ this._modules = new SortableSet(undefined, sortByIdentifier); + /** @type {string?} */ + this.filenameTemplate = undefined; /** @private */ this._groups = new SortableSet(undefined, sortChunkGroupById); diff --git a/lib/ContextModule.js b/lib/ContextModule.js index 175187a6973..9db2914b713 100644 --- a/lib/ContextModule.js +++ b/lib/ContextModule.js @@ -3,12 +3,12 @@ Author Tobias Koppers @sokra */ "use strict"; -const path = require("path"); const util = require("util"); const { OriginalSource, RawSource } = require("webpack-sources"); const Module = require("./Module"); const AsyncDependenciesBlock = require("./AsyncDependenciesBlock"); const Template = require("./Template"); +const contextify = require("./util/identifier").contextify; /** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */ @@ -63,18 +63,6 @@ class ContextModule extends Module { return regexString.substring(1, regexString.length - 1); } - contextify(context, request) { - return request - .split("!") - .map(subrequest => { - let rp = path.relative(context, subrequest); - if (path.sep === "\\") rp = rp.replace(/\\/g, "/"); - if (rp.indexOf("../") !== 0) rp = "./" + rp; - return rp; - }) - .join("!"); - } - _createIdentifier() { let identifier = this.context; if (this.options.resourceQuery) { @@ -155,7 +143,7 @@ class ContextModule extends Module { } libIdent(options) { - let identifier = this.contextify(options.context, this.context); + let identifier = contextify(options.context, this.context); if (this.options.mode) { identifier += ` ${this.options.mode}`; } @@ -163,7 +151,7 @@ class ContextModule extends Module { identifier += " recursive"; } if (this.options.addon) { - identifier += ` ${this.contextify(options.context, this.options.addon)}`; + identifier += ` ${contextify(options.context, this.options.addon)}`; } if (this.options.regExp) { identifier += ` ${this.prettyRegExp(this.options.regExp + "")}`; diff --git a/lib/Module.js b/lib/Module.js index 54997b54cb4..b0a533a85a4 100644 --- a/lib/Module.js +++ b/lib/Module.js @@ -384,6 +384,8 @@ Module.prototype.build = null; Module.prototype.source = null; Module.prototype.size = null; Module.prototype.nameForCondition = null; +/** @type {null | function(Chunk): boolean} */ +Module.prototype.chunkCondition = null; Module.prototype.updateCacheModule = null; module.exports = Module; diff --git a/lib/NormalModule.js b/lib/NormalModule.js index d22b2eac9b0..9c5dff5925d 100644 --- a/lib/NormalModule.js +++ b/lib/NormalModule.js @@ -4,7 +4,6 @@ */ "use strict"; -const path = require("path"); const NativeModule = require("module"); const { @@ -23,6 +22,7 @@ const ModuleBuildError = require("./ModuleBuildError"); const ModuleError = require("./ModuleError"); const ModuleWarning = require("./ModuleWarning"); const createHash = require("./util/createHash"); +const contextify = require("./util/identifier").contextify; const asString = buf => { if (Buffer.isBuffer(buf)) { @@ -38,28 +38,6 @@ const asBuffer = str => { return str; }; -const contextify = (context, request) => { - return request - .split("!") - .map(r => { - const splitPath = r.split("?"); - if (/^[a-zA-Z]:\\/.test(splitPath[0])) { - splitPath[0] = path.win32.relative(context, splitPath[0]); - if (!/^[a-zA-Z]:\\/.test(splitPath[0])) { - splitPath[0] = splitPath[0].replace(/\\/g, "/"); - } - } - if (/^\//.test(splitPath[0])) { - splitPath[0] = path.posix.relative(context, splitPath[0]); - } - if (!/^(\.\.\/|\/|[a-zA-Z]:\\)/.test(splitPath[0])) { - splitPath[0] = "./" + splitPath[0]; - } - return splitPath.join("?"); - }) - .join("!"); -}; - class NonErrorEmittedError extends WebpackError { constructor(error) { super(); diff --git a/lib/WebpackOptionsDefaulter.js b/lib/WebpackOptionsDefaulter.js index f0d3f8922e0..3f9da0b72d2 100644 --- a/lib/WebpackOptionsDefaulter.js +++ b/lib/WebpackOptionsDefaulter.js @@ -215,6 +215,9 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { isProductionLikeMode(options) ); this.set("optimization.splitChunks", {}); + this.set("optimization.splitChunks.hidePathInfo", "make", options => { + return isProductionLikeMode(options); + }); this.set("optimization.splitChunks.chunks", "async"); this.set("optimization.splitChunks.minSize", "make", options => { return isProductionLikeMode(options) ? 30000 : 10000; diff --git a/lib/optimize/SplitChunksPlugin.js b/lib/optimize/SplitChunksPlugin.js index c49c5b1761e..d56e2699399 100644 --- a/lib/optimize/SplitChunksPlugin.js +++ b/lib/optimize/SplitChunksPlugin.js @@ -8,9 +8,16 @@ const crypto = require("crypto"); const SortableSet = require("../util/SortableSet"); const GraphHelpers = require("../GraphHelpers"); const { isSubset } = require("../util/SetHelpers"); +const deterministicGrouping = require("../util/deterministicGrouping"); +const contextify = require("../util/identifier").contextify; +/** @typedef {import("../Compiler")} Compiler */ /** @typedef {import("../Chunk")} Chunk */ /** @typedef {import("../Module")} Module */ +/** @typedef {import("../util/deterministicGrouping").Options} DeterministicGroupingOptionsForModule */ +/** @typedef {import("../util/deterministicGrouping").GroupedItems} DeterministicGroupingGroupedItemsForModule */ + +const deterministicGroupingForModules = /** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */ (deterministicGrouping); const hashFilename = name => { return crypto @@ -104,6 +111,7 @@ module.exports = class SplitChunksPlugin { options.chunks || "all" ), minSize: options.minSize || 0, + maxSize: options.maxSize || 0, minChunks: options.minChunks || 1, maxAsyncRequests: options.maxAsyncRequests || 1, maxInitialRequests: options.maxInitialRequests || 1, @@ -112,11 +120,16 @@ module.exports = class SplitChunksPlugin { name: options.name, automaticNameDelimiter: options.automaticNameDelimiter }) || (() => {}), + hidePathInfo: options.hidePathInfo || false, filename: options.filename || undefined, getCacheGroups: SplitChunksPlugin.normalizeCacheGroups({ cacheGroups: options.cacheGroups, automaticNameDelimiter: options.automaticNameDelimiter - }) + }), + fallbackCacheGroup: SplitChunksPlugin.normalizeFallbackCacheGroup( + options.fallbackCacheGroup || {}, + options + ) }; } @@ -177,6 +190,26 @@ module.exports = class SplitChunksPlugin { if (typeof chunks === "function") return chunks; } + static normalizeFallbackCacheGroup( + { + minSize = undefined, + maxSize = undefined, + automaticNameDelimiter = undefined + }, + { + minSize: defaultMinSize = undefined, + maxSize: defaultMaxSize = undefined, + automaticNameDelimiter: defaultAutomaticNameDelimiter = undefined + } + ) { + return { + minSize: typeof minSize === "number" ? minSize : defaultMinSize || 0, + maxSize: typeof maxSize === "number" ? maxSize : defaultMaxSize || 0, + automaticNameDelimiter: + automaticNameDelimiter || defaultAutomaticNameDelimiter || "~" + }; + } + static normalizeCacheGroups({ cacheGroups, automaticNameDelimiter }) { if (typeof cacheGroups === "function") { // TODO webpack 5 remove this @@ -225,6 +258,7 @@ module.exports = class SplitChunksPlugin { ), enforce: option.enforce, minSize: option.minSize, + maxSize: option.maxSize, minChunks: option.minChunks, maxAsyncRequests: option.maxAsyncRequests, maxInitialRequests: option.maxInitialRequests, @@ -278,6 +312,10 @@ module.exports = class SplitChunksPlugin { return false; } + /** + * @param {Compiler} compiler webpack compiler + * @returns {void} + */ apply(compiler) { compiler.hooks.thisCompilation.tap("SplitChunksPlugin", compilation => { let alreadyOptimized = false; @@ -486,6 +524,12 @@ module.exports = class SplitChunksPlugin { : cacheGroupSource.enforce ? 0 : this.options.minSize, + maxSize: + cacheGroupSource.maxSize !== undefined + ? cacheGroupSource.maxSize + : cacheGroupSource.enforce + ? 0 + : this.options.maxSize, minChunks: cacheGroupSource.minChunks !== undefined ? cacheGroupSource.minChunks @@ -537,6 +581,9 @@ module.exports = class SplitChunksPlugin { } } + /** @type {Map} */ + const maxSizeQueueMap = new Map(); + while (chunksInfoMap.size > 0) { // Find best matching entry let bestEntryKey; @@ -563,6 +610,7 @@ module.exports = class SplitChunksPlugin { let chunkName = item.name; // Variable for the new chunk (lazy created) + /** @type {Chunk} */ let newChunk; // When no chunk name, check if we can reuse a chunk instead of creating a new one let isReused = false; @@ -689,6 +737,22 @@ module.exports = class SplitChunksPlugin { } } } + + if (item.cacheGroup.maxSize > 0) { + const oldMaxSizeSettings = maxSizeQueueMap.get(newChunk); + maxSizeQueueMap.set(newChunk, { + minSize: Math.max( + oldMaxSizeSettings ? oldMaxSizeSettings.minSize : 0, + item.cacheGroup.minSize + ), + maxSize: Math.min( + oldMaxSizeSettings ? oldMaxSizeSettings.maxSize : Infinity, + item.cacheGroup.maxSize + ), + automaticNameDelimiter: item.cacheGroup.automaticNameDelimiter + }); + } + // remove all modules from other entries and update size for (const [key, info] of chunksInfoMap) { if (isOverlap(info.chunks, item.chunks)) { @@ -709,6 +773,76 @@ module.exports = class SplitChunksPlugin { } } } + + // Make sure that maxSize is fulfilled + for (const chunk of compilation.chunks.slice()) { + const { minSize, maxSize, automaticNameDelimiter } = + maxSizeQueueMap.get(chunk) || this.options.fallbackCacheGroup; + if (!maxSize) continue; + const results = deterministicGroupingForModules({ + maxSize, + minSize, + items: chunk.modulesIterable, + getKey(module) { + const ident = contextify( + compilation.options.context, + module.identifier() + ); + const name = module.nameForCondition + ? contextify( + compilation.options.context, + module.nameForCondition() + ) + : ident.replace(/^.*!|\?[^?!]*$/g, ""); + const fullKey = + name + automaticNameDelimiter + hashFilename(ident); + return fullKey.replace(/[\\/?]/g, "_"); + }, + getSize(module) { + return module.size(); + } + }); + results.sort((a, b) => { + if (a.key < b.key) return -1; + if (a.key > b.key) return 1; + return 0; + }); + for (let i = 0; i < results.length; i++) { + const group = results[i]; + const key = this.options.hidePathInfo + ? hashFilename(group.key) + : group.key; + let name = chunk.name + ? chunk.name + automaticNameDelimiter + key + : null; + if (name && name.length > 100) { + name = + name.slice(0, 100) + + automaticNameDelimiter + + hashFilename(name); + } + let newPart; + if (i !== results.length - 1) { + newPart = compilation.addChunk(name); + chunk.split(newPart); + // Add all modules to the new chunk + for (const module of group.items) { + if (typeof module.chunkCondition === "function") { + if (!module.chunkCondition(newPart)) continue; + } + // Add module to new chunk + GraphHelpers.connectChunkAndModule(newPart, module); + // Remove module from used chunks + chunk.removeModule(module); + module.rewriteChunkInReasons(chunk, [newPart]); + } + } else { + // change the chunk to be a part + newPart = chunk; + chunk.name = name; + } + } + } } ); }); diff --git a/lib/util/deterministicGrouping.js b/lib/util/deterministicGrouping.js new file mode 100644 index 00000000000..75827b0c1bb --- /dev/null +++ b/lib/util/deterministicGrouping.js @@ -0,0 +1,251 @@ +"use strict"; + +// Simulations show these probabilities for a single change +// 93.1% that one group is invalidated +// 4.8% that two groups are invalidated +// 1.1% that 3 groups are invalidated +// 0.1% that 4 or more groups are invalidated +// +// And these for removing/adding 10 lexically adjacent files +// 64.5% that one group is invalidated +// 24.8% that two groups are invalidated +// 7.8% that 3 groups are invalidated +// 2.7% that 4 or more groups are invalidated +// +// And these for removing/adding 3 random files +// 0% that one group is invalidated +// 3.7% that two groups are invalidated +// 80.8% that 3 groups are invalidated +// 12.3% that 4 groups are invalidated +// 3.2% that 5 or more groups are invalidated + +/** + * + * @param {string} a key + * @param {string} b key + * @returns {number} the similarity as number + */ +const similarity = (a, b) => { + const l = Math.min(a.length, b.length); + let dist = 0; + for (let i = 0; i < l; i++) { + const ca = a.charCodeAt(i); + const cb = b.charCodeAt(i); + dist += Math.max(0, 10 - Math.abs(ca - cb)); + } + return dist; +}; + +/** + * @param {string} a key + * @param {string} b key + * @returns {string} the common part and a single char for the difference + */ +const getName = (a, b) => { + const l = Math.min(a.length, b.length); + let r = ""; + for (let i = 0; i < l; i++) { + const ca = a.charAt(i); + const cb = b.charAt(i); + r += ca; + if (ca === cb) { + continue; + } + return r; + } + return a; +}; + +/** + * @template T + */ +class Node { + /** + * @param {T} item item + * @param {string} key key + * @param {number} size size + */ + constructor(item, key, size) { + this.item = item; + this.key = key; + this.size = size; + } +} + +/** + * @template T + */ +class Group { + /** + * @param {Node[]} nodes nodes + * @param {number[]} similarities similarities between the nodes (length = nodes.length - 1) + */ + constructor(nodes, similarities) { + this.nodes = nodes; + this.similarities = similarities; + this.size = nodes.reduce((size, node) => size + node.size, 0); + /** @type {string} */ + this.key = undefined; + } +} + +/** + * @template T + * @typedef {Object} GroupedItems + * @property {string} key + * @property {T[]} items + * @property {number} size + */ + +/** + * @template T + * @typedef {Object} Options + * @property {number} maxSize maximum size of a group + * @property {number} minSize minimum size of a group (preferred over maximum size) + * @property {Iterable} items a list of items + * @property {function(T): number} getSize function to get size of an item + * @property {function(T): string} getKey function to get the key of an item + */ + +/** + * @template T + * @param {Options} options options object + * @returns {GroupedItems[]} grouped items + */ +module.exports = ({ maxSize, minSize, items, getSize, getKey }) => { + /** @type {Group[]} */ + const result = []; + + const nodes = Array.from( + items, + item => new Node(item, getKey(item), getSize(item)) + ); + + /** @type {Node[]} */ + const initialNodes = []; + + // return nodes bigger than maxSize directly as group + for (const node of nodes) { + if (node.size >= maxSize) { + result.push(new Group([node], [])); + } else { + initialNodes.push(node); + } + } + + if (initialNodes.length > 0) { + // lexically ordering of keys + initialNodes.sort((a, b) => { + if (a.key < b.key) return -1; + if (a.key > b.key) return 1; + return 0; + }); + + // calculate similarities between lexically adjacent nodes + /** @type {number[]} */ + const similarities = []; + for (let i = 1; i < initialNodes.length; i++) { + const a = initialNodes[i - 1]; + const b = initialNodes[i]; + similarities.push(similarity(a.key, b.key)); + } + + const queue = [new Group(initialNodes, similarities)]; + + while (queue.length) { + const group = queue.pop(); + // only groups bigger than maxSize need to be splitted + if (group.size < maxSize) { + result.push(group); + continue; + } + + // find unsplittable area from left and right + // going minSize from left and right + let left = 0; + let leftSize = 0; + while (leftSize < minSize) { + leftSize += group.nodes[left].size; + left++; + } + let right = group.nodes.length - 1; + let rightSize = 0; + while (rightSize < minSize) { + rightSize += group.nodes[right].size; + right--; + } + + if (left - 1 > right) { + // can't split group while holding minSize + // because minSize is preferred of maxSize we return + // the group here even while it's too big + // To avoid this make sure maxSize > minSize * 3 + result.push(group); + continue; + } + if (left <= right) { + // when there is a area between left and right + // we look for best split point + // we split at the minimum similiarity + // here key space is separated the most + let best = left - 1; + let bestSimilarity = group.similarities[best]; + for (let i = left; i <= right; i++) { + const similarity = group.similarities[i]; + if (similarity < bestSimilarity) { + best = i; + bestSimilarity = similarity; + } + } + left = best + 1; + right = best; + } + + // create two new groups for left and right area + // and queue them up + const rightNodes = [group.nodes[right + 1]]; + /** @type {number[]} */ + const rightSimilaries = []; + for (let i = right + 2; i < group.nodes.length; i++) { + rightSimilaries.push(group.similarities[i - 1]); + rightNodes.push(group.nodes[i]); + } + queue.push(new Group(rightNodes, rightSimilaries)); + + const leftNodes = [group.nodes[0]]; + /** @type {number[]} */ + const leftSimilaries = []; + for (let i = 1; i < left; i++) { + leftSimilaries.push(group.similarities[i - 1]); + leftNodes.push(group.nodes[i]); + } + queue.push(new Group(leftNodes, leftSimilaries)); + } + } + + // lexically ordering + result.sort((a, b) => { + if (a.nodes[0].key < b.nodes[0].key) return -1; + if (a.nodes[0].key > b.nodes[0].key) return 1; + return 0; + }); + + // give every group a name + for (let i = 0; i < result.length; i++) { + const group = result[i]; + const first = group.nodes[0]; + const last = group.nodes[group.nodes.length - 1]; + let name = getName(first.key, last.key); + group.key = name; + } + + // return the results + return result.map(group => { + /** @type {GroupedItems} */ + return { + key: group.key, + items: group.nodes.map(node => node.item), + size: group.size + }; + }); +}; diff --git a/lib/util/identifier.js b/lib/util/identifier.js index 9176facd0fd..ade63590821 100644 --- a/lib/util/identifier.js +++ b/lib/util/identifier.js @@ -74,3 +74,30 @@ exports.makePathsRelative = (context, identifier, cache) => { return relativePath; } }; + +/** + * @param {string} context absolute context path + * @param {string} request any request string may containing absolute paths, query string, etc. + * @returns {string} a new request string avoiding absolute paths when possible + */ +exports.contextify = (context, request) => { + return request + .split("!") + .map(r => { + const splitPath = r.split("?", 2); + if (/^[a-zA-Z]:\\/.test(splitPath[0])) { + splitPath[0] = path.win32.relative(context, splitPath[0]); + if (!/^[a-zA-Z]:\\/.test(splitPath[0])) { + splitPath[0] = splitPath[0].replace(/\\/g, "/"); + } + } + if (/^\//.test(splitPath[0])) { + splitPath[0] = path.posix.relative(context, splitPath[0]); + } + if (!/^(\.\.\/|\/|[a-zA-Z]:\\)/.test(splitPath[0])) { + splitPath[0] = "./" + splitPath[0]; + } + return splitPath.join("?"); + }) + .join("!"); +}; diff --git a/schemas/WebpackOptions.json b/schemas/WebpackOptions.json index 2fe65fb16b3..7581fe8dd22 100644 --- a/schemas/WebpackOptions.json +++ b/schemas/WebpackOptions.json @@ -1351,7 +1351,12 @@ ] }, "minSize": { - "description": "Minimal size for the created chunk", + "description": "Minimal size for the created chunks", + "type": "number", + "minimum": 0 + }, + "maxSize": { + "description": "Maximal size hint for the created chunks", "type": "number", "minimum": 0 }, @@ -1394,6 +1399,32 @@ "type": "string", "minLength": 1 }, + "hidePathInfo": { + "description": "Prevents exposing path info when creating names for parts splitted by maxSize", + "type": "boolean" + }, + "fallbackCacheGroup": { + "description": "Options for modules not selected by any other cache group", + "type": "object", + "additionalProperties": false, + "properties": { + "minSize": { + "description": "Minimal size for the created chunk", + "type": "number", + "minimum": 0 + }, + "maxSize": { + "description": "Maximal size hint for the created chunks", + "type": "number", + "minimum": 0 + }, + "automaticNameDelimiter": { + "description": "Sets the name delimiter for created chunks", + "type": "string", + "minLength": 1 + } + } + }, "cacheGroups": { "description": "Assign modules to a cache group (modules from different cache groups are tried to keep in separate chunks)", "type": "object", @@ -1460,6 +1491,11 @@ "type": "number", "minimum": 0 }, + "maxSize": { + "description": "Maximal size hint for the created chunks", + "type": "number", + "minimum": 0 + }, "minChunks": { "description": "Minimum number of times a module has to be duplicated until it's considered for splitting", "type": "number", diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index 3808b4ea6a8..ca7b99a36fc 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -2772,6 +2772,139 @@ chunk {3} b.js (b) 43 bytes >{0}< >{1}< [entry] [rendered] [3] ./b.js 43 bytes {3} [built]" `; +exports[`StatsTestCases should print correct stats for split-chunks-max-size 1`] = ` +"Child production: + Entrypoint main = prod-main~6e7ead72.js prod-main~6a2ae26b.js prod-main~17acad98.js prod-main~b2c7414a.js prod-main~75f09de8.js prod-main~052b3814.js prod-main~3ff27526.js prod-main~11485824.js prod-main~c6931360.js prod-main~cd7c5bfc.js prod-main~02369f19.js + chunk {0} prod-main~02369f19.js (main~02369f19) 1.57 KiB ={1}= ={10}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [entry] [rendered] + > ./ main + [11] ./very-big.js?1 1.57 KiB {0} [built] + chunk {1} prod-main~6e7ead72.js (main~6e7ead72) 536 bytes ={0}= ={10}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + > ./ main + [0] ./big.js?1 268 bytes {1} [built] + [1] ./big.js?2 268 bytes {1} [built] + chunk {2} prod-main~6a2ae26b.js (main~6a2ae26b) 536 bytes ={0}= ={1}= ={10}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + > ./ main + [34] ./in-some-directory/big.js?1 268 bytes {2} [built] + [35] ./in-some-directory/small.js?1 67 bytes {2} [built] + [36] ./in-some-directory/small.js?2 67 bytes {2} [built] + [37] ./in-some-directory/small.js?3 67 bytes {2} [built] + [38] ./in-some-directory/small.js?4 67 bytes {2} [built] + chunk {3} prod-main~17acad98.js (main~17acad98) 1.57 KiB ={0}= ={1}= ={10}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + > ./ main + [39] ./in-some-directory/very-big.js?1 1.57 KiB {3} [built] + chunk {4} prod-main~b2c7414a.js (main~b2c7414a) 1.11 KiB ={0}= ={1}= ={10}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + > ./ main + [40] ./index.js 1.11 KiB {4} [built] + chunk {5} prod-main~75f09de8.js (main~75f09de8) 603 bytes ={0}= ={1}= ={10}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + > ./ main + [25] ./inner-module/small.js?1 67 bytes {5} [built] + [26] ./inner-module/small.js?2 67 bytes {5} [built] + [27] ./inner-module/small.js?3 67 bytes {5} [built] + [28] ./inner-module/small.js?4 67 bytes {5} [built] + [29] ./inner-module/small.js?5 67 bytes {5} [built] + [30] ./inner-module/small.js?6 67 bytes {5} [built] + [31] ./inner-module/small.js?7 67 bytes {5} [built] + [32] ./inner-module/small.js?8 67 bytes {5} [built] + [33] ./inner-module/small.js?9 67 bytes {5} [built] + chunk {6} prod-main~052b3814.js (main~052b3814) 603 bytes ={0}= ={1}= ={10}= ={2}= ={3}= ={4}= ={5}= ={7}= ={8}= ={9}= [initial] [rendered] + > ./ main + [2] ./small.js?1 67 bytes {6} [built] + [3] ./small.js?2 67 bytes {6} [built] + [4] ./small.js?3 67 bytes {6} [built] + [5] ./small.js?4 67 bytes {6} [built] + [6] ./small.js?5 67 bytes {6} [built] + [7] ./small.js?6 67 bytes {6} [built] + [8] ./small.js?7 67 bytes {6} [built] + [9] ./small.js?8 67 bytes {6} [built] + [10] ./small.js?9 67 bytes {6} [built] + chunk {7} prod-main~3ff27526.js (main~3ff27526) 536 bytes ={0}= ={1}= ={10}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= ={9}= [initial] [rendered] + > ./ main + [14] ./subfolder/big.js?1 268 bytes {7} [built] + [15] ./subfolder/big.js?2 268 bytes {7} [built] + chunk {8} prod-main~11485824.js (main~11485824) 603 bytes ={0}= ={1}= ={10}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={9}= [initial] [rendered] + > ./ main + [16] ./subfolder/small.js?1 67 bytes {8} [built] + [17] ./subfolder/small.js?2 67 bytes {8} [built] + [18] ./subfolder/small.js?3 67 bytes {8} [built] + [19] ./subfolder/small.js?4 67 bytes {8} [built] + [20] ./subfolder/small.js?5 67 bytes {8} [built] + [21] ./subfolder/small.js?6 67 bytes {8} [built] + [22] ./subfolder/small.js?7 67 bytes {8} [built] + [23] ./subfolder/small.js?8 67 bytes {8} [built] + [24] ./subfolder/small.js?9 67 bytes {8} [built] + chunk {9} prod-main~c6931360.js (main~c6931360) 1.57 KiB ={0}= ={1}= ={10}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= [initial] [rendered] + > ./ main + [12] ./very-big.js?2 1.57 KiB {9} [built] + chunk {10} prod-main~cd7c5bfc.js (main~cd7c5bfc) 1.57 KiB ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + > ./ main + [13] ./very-big.js?3 1.57 KiB {10} [built] +Child development: + Entrypoint main = dev-main~._big.js~1.js dev-main~._in-some-directory_b.js dev-main~._in-some-directory_very-big.js~8d76cf03.js dev-main~._index.js~41f5a26e.js dev-main~._inner-module_small.js~3.js dev-main~._small.js~1.js dev-main~._subfolder_big.js~b.js dev-main~._subfolder_small.js~1.js dev-main~._very-big.js~08cf55cf.js dev-main~._very-big.js~4647fb9d.js dev-main~._very-big.js~62f7f644.js + chunk {main~._big.js~1} dev-main~._big.js~1.js (main~._big.js~1) 536 bytes ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + > ./ main + [./big.js?1] 268 bytes {main~._big.js~1} [built] + [./big.js?2] 268 bytes {main~._big.js~1} [built] + chunk {main~._in-some-directory_b} dev-main~._in-some-directory_b.js (main~._in-some-directory_b) 536 bytes ={main~._big.js~1}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + > ./ main + [./in-some-directory/big.js?1] 268 bytes {main~._in-some-directory_b} [built] + [./in-some-directory/small.js?1] 67 bytes {main~._in-some-directory_b} [built] + [./in-some-directory/small.js?2] 67 bytes {main~._in-some-directory_b} [built] + [./in-some-directory/small.js?3] 67 bytes {main~._in-some-directory_b} [built] + [./in-some-directory/small.js?4] 67 bytes {main~._in-some-directory_b} [built] + chunk {main~._in-some-directory_very-big.js~8d76cf03} dev-main~._in-some-directory_very-big.js~8d76cf03.js (main~._in-some-directory_very-big.js~8d76cf03) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + > ./ main + [./in-some-directory/very-big.js?1] 1.57 KiB {main~._in-some-directory_very-big.js~8d76cf03} [built] + chunk {main~._index.js~41f5a26e} dev-main~._index.js~41f5a26e.js (main~._index.js~41f5a26e) 1.11 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + > ./ main + [./index.js] 1.11 KiB {main~._index.js~41f5a26e} [built] + chunk {main~._inner-module_small.js~3} dev-main~._inner-module_small.js~3.js (main~._inner-module_small.js~3) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + > ./ main + [./inner-module/small.js?1] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?2] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?3] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?4] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?5] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?6] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?7] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?8] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?9] 67 bytes {main~._inner-module_small.js~3} [built] + chunk {main~._small.js~1} dev-main~._small.js~1.js (main~._small.js~1) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + > ./ main + [./small.js?1] 67 bytes {main~._small.js~1} [built] + [./small.js?2] 67 bytes {main~._small.js~1} [built] + [./small.js?3] 67 bytes {main~._small.js~1} [built] + [./small.js?4] 67 bytes {main~._small.js~1} [built] + [./small.js?5] 67 bytes {main~._small.js~1} [built] + [./small.js?6] 67 bytes {main~._small.js~1} [built] + [./small.js?7] 67 bytes {main~._small.js~1} [built] + [./small.js?8] 67 bytes {main~._small.js~1} [built] + [./small.js?9] 67 bytes {main~._small.js~1} [built] + chunk {main~._subfolder_big.js~b} dev-main~._subfolder_big.js~b.js (main~._subfolder_big.js~b) 536 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + > ./ main + [./subfolder/big.js?1] 268 bytes {main~._subfolder_big.js~b} [built] + [./subfolder/big.js?2] 268 bytes {main~._subfolder_big.js~b} [built] + chunk {main~._subfolder_small.js~1} dev-main~._subfolder_small.js~1.js (main~._subfolder_small.js~1) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + > ./ main + [./subfolder/small.js?1] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?2] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?3] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?4] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?5] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?6] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?7] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?8] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?9] 67 bytes {main~._subfolder_small.js~1} [built] + chunk {main~._very-big.js~08cf55cf} dev-main~._very-big.js~08cf55cf.js (main~._very-big.js~08cf55cf) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + > ./ main + [./very-big.js?2] 1.57 KiB {main~._very-big.js~08cf55cf} [built] + chunk {main~._very-big.js~4647fb9d} dev-main~._very-big.js~4647fb9d.js (main~._very-big.js~4647fb9d) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + > ./ main + [./very-big.js?3] 1.57 KiB {main~._very-big.js~4647fb9d} [built] + chunk {main~._very-big.js~62f7f644} dev-main~._very-big.js~62f7f644.js (main~._very-big.js~62f7f644) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= [entry] [rendered] + > ./ main + [./very-big.js?1] 1.57 KiB {main~._very-big.js~62f7f644} [built]" +`; + exports[`StatsTestCases should print correct stats for split-chunks-prefer-bigger-splits 1`] = ` "Entrypoint main = default/main.js chunk {0} default/async-b~async-c.js (async-b~async-c) 110 bytes <{4}> ={2}= ={3}= [rendered] split chunk (cache group: default) (name: async-b~async-c) diff --git a/test/statsCases/split-chunks-max-size/big.js b/test/statsCases/split-chunks-max-size/big.js new file mode 100644 index 00000000000..40380e42352 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/big.js @@ -0,0 +1,4 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/in-some-directory/big.js b/test/statsCases/split-chunks-max-size/in-some-directory/big.js new file mode 100644 index 00000000000..40380e42352 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/in-some-directory/big.js @@ -0,0 +1,4 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/in-some-directory/small.js b/test/statsCases/split-chunks-max-size/in-some-directory/small.js new file mode 100644 index 00000000000..1f44b439eae --- /dev/null +++ b/test/statsCases/split-chunks-max-size/in-some-directory/small.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/in-some-directory/very-big.js b/test/statsCases/split-chunks-max-size/in-some-directory/very-big.js new file mode 100644 index 00000000000..4c943771c37 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/in-some-directory/very-big.js @@ -0,0 +1,24 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/index.js b/test/statsCases/split-chunks-max-size/index.js new file mode 100644 index 00000000000..5b5a81edd66 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/index.js @@ -0,0 +1,43 @@ +import "./big?1"; +import "./big?2"; +import "./small?1"; +import "./small?2"; +import "./small?3"; +import "./small?4"; +import "./small?5"; +import "./small?6"; +import "./small?7"; +import "./small?8"; +import "./small?9"; +import "./very-big?1"; +import "./very-big?2"; +import "./very-big?3"; + +import "./subfolder/big?1"; +import "./subfolder/big?2"; +import "./subfolder/small?1"; +import "./subfolder/small?2"; +import "./subfolder/small?3"; +import "./subfolder/small?4"; +import "./subfolder/small?5"; +import "./subfolder/small?6"; +import "./subfolder/small?7"; +import "./subfolder/small?8"; +import "./subfolder/small?9"; + +import "./inner-module/small?1"; +import "./inner-module/small?2"; +import "./inner-module/small?3"; +import "./inner-module/small?4"; +import "./inner-module/small?5"; +import "./inner-module/small?6"; +import "./inner-module/small?7"; +import "./inner-module/small?8"; +import "./inner-module/small?9"; + +import "./in-some-directory/big?1"; +import "./in-some-directory/small?1"; +import "./in-some-directory/small?2"; +import "./in-some-directory/small?3"; +import "./in-some-directory/small?4"; +import "./in-some-directory/very-big?1"; diff --git a/test/statsCases/split-chunks-max-size/inner-module/big.js b/test/statsCases/split-chunks-max-size/inner-module/big.js new file mode 100644 index 00000000000..40380e42352 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/inner-module/big.js @@ -0,0 +1,4 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/inner-module/small.js b/test/statsCases/split-chunks-max-size/inner-module/small.js new file mode 100644 index 00000000000..1f44b439eae --- /dev/null +++ b/test/statsCases/split-chunks-max-size/inner-module/small.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/inner-module/very-big.js b/test/statsCases/split-chunks-max-size/inner-module/very-big.js new file mode 100644 index 00000000000..4c943771c37 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/inner-module/very-big.js @@ -0,0 +1,24 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/small.js b/test/statsCases/split-chunks-max-size/small.js new file mode 100644 index 00000000000..1f44b439eae --- /dev/null +++ b/test/statsCases/split-chunks-max-size/small.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/subfolder/big.js b/test/statsCases/split-chunks-max-size/subfolder/big.js new file mode 100644 index 00000000000..40380e42352 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/subfolder/big.js @@ -0,0 +1,4 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/subfolder/small.js b/test/statsCases/split-chunks-max-size/subfolder/small.js new file mode 100644 index 00000000000..1f44b439eae --- /dev/null +++ b/test/statsCases/split-chunks-max-size/subfolder/small.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/subfolder/very-big.js b/test/statsCases/split-chunks-max-size/subfolder/very-big.js new file mode 100644 index 00000000000..4c943771c37 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/subfolder/very-big.js @@ -0,0 +1,24 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/very-big.js b/test/statsCases/split-chunks-max-size/very-big.js new file mode 100644 index 00000000000..4c943771c37 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/very-big.js @@ -0,0 +1,24 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/webpack.config.js b/test/statsCases/split-chunks-max-size/webpack.config.js new file mode 100644 index 00000000000..3987fc2a86f --- /dev/null +++ b/test/statsCases/split-chunks-max-size/webpack.config.js @@ -0,0 +1,46 @@ +const stats = { + hash: false, + timings: false, + builtAt: false, + assets: false, + chunks: true, + chunkOrigins: true, + entrypoints: true, + modules: false +}; +module.exports = [ + { + name: "production", + mode: "production", + entry: { + main: "./" + }, + output: { + filename: "prod-[name].js" + }, + optimization: { + splitChunks: { + minSize: 100, + maxSize: 1000 + } + }, + stats + }, + { + name: "development", + mode: "development", + entry: { + main: "./" + }, + output: { + filename: "dev-[name].js" + }, + optimization: { + splitChunks: { + minSize: 100, + maxSize: 1000 + } + }, + stats + } +]; From 6705141ef626dfb295d8ca9c737d1ae8eab4829a Mon Sep 17 00:00:00 2001 From: skratchdot Date: Wed, 4 Jul 2018 11:02:07 -0400 Subject: [PATCH 03/41] prevent UnhandledPromiseRejectionWarning in node 6 Fixes #7654 --- lib/debug/ProfilingPlugin.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/debug/ProfilingPlugin.js b/lib/debug/ProfilingPlugin.js index 1cb96271035..a8ba8a2165c 100644 --- a/lib/debug/ProfilingPlugin.js +++ b/lib/debug/ProfilingPlugin.js @@ -137,7 +137,9 @@ const createTrace = outputPath => { callback(); }); // Tear down the readable trace stream. - trace.destroy(); + if (trace.destroy) { + trace.destroy(); + } } }; }; From bdd4442c449b41d2a0ea7ed0de9cded3ba0e2e31 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Wed, 4 Jul 2018 21:42:27 +0200 Subject: [PATCH 04/41] 4.15.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 44ac63915e0..a22497fff82 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "webpack", - "version": "4.14.0", + "version": "4.15.0", "author": "Tobias Koppers @sokra", "description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.", "license": "MIT", From 3b6f4756351d95fde359695fbc317b4e3f2c4e2f Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 5 Jul 2018 10:32:53 +0200 Subject: [PATCH 05/41] Use push null to end the stream --- lib/debug/ProfilingPlugin.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/debug/ProfilingPlugin.js b/lib/debug/ProfilingPlugin.js index a8ba8a2165c..ea65b35905d 100644 --- a/lib/debug/ProfilingPlugin.js +++ b/lib/debug/ProfilingPlugin.js @@ -137,9 +137,7 @@ const createTrace = outputPath => { callback(); }); // Tear down the readable trace stream. - if (trace.destroy) { - trace.destroy(); - } + trace.push(null); } }; }; From 6172d3c2ebddceedec1c28e0e92fe3b2a3dc0c38 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 5 Jul 2018 11:25:34 +0200 Subject: [PATCH 06/41] fix memory leak with HMR fixes #6929 --- lib/HotModuleReplacementPlugin.js | 230 +++++++++++++++--------------- 1 file changed, 114 insertions(+), 116 deletions(-) diff --git a/lib/HotModuleReplacementPlugin.js b/lib/HotModuleReplacementPlugin.js index 4b0edac7241..fa893aa3d69 100644 --- a/lib/HotModuleReplacementPlugin.js +++ b/lib/HotModuleReplacementPlugin.js @@ -35,6 +35,118 @@ module.exports = class HotModuleReplacementPlugin { return callback(); } ); + + const addParserPlugins = (parser, parserOptions) => { + parser.hooks.expression + .for("__webpack_hash__") + .tap( + "HotModuleReplacementPlugin", + ParserHelpers.toConstantDependencyWithWebpackRequire( + parser, + "__webpack_require__.h()" + ) + ); + parser.hooks.evaluateTypeof + .for("__webpack_hash__") + .tap( + "HotModuleReplacementPlugin", + ParserHelpers.evaluateToString("string") + ); + parser.hooks.evaluateIdentifier.for("module.hot").tap( + { + name: "HotModuleReplacementPlugin", + before: "NodeStuffPlugin" + }, + expr => { + return ParserHelpers.evaluateToIdentifier( + "module.hot", + !!parser.state.compilation.hotUpdateChunkTemplate + )(expr); + } + ); + // TODO webpack 5: refactor this, no custom hooks + if (!parser.hooks.hotAcceptCallback) { + parser.hooks.hotAcceptCallback = new SyncBailHook([ + "expression", + "requests" + ]); + } + if (!parser.hooks.hotAcceptWithoutCallback) { + parser.hooks.hotAcceptWithoutCallback = new SyncBailHook([ + "expression", + "requests" + ]); + } + parser.hooks.call + .for("module.hot.accept") + .tap("HotModuleReplacementPlugin", expr => { + if (!parser.state.compilation.hotUpdateChunkTemplate) { + return false; + } + if (expr.arguments.length >= 1) { + const arg = parser.evaluateExpression(expr.arguments[0]); + let params = []; + let requests = []; + if (arg.isString()) { + params = [arg]; + } else if (arg.isArray()) { + params = arg.items.filter(param => param.isString()); + } + if (params.length > 0) { + params.forEach((param, idx) => { + const request = param.string; + const dep = new ModuleHotAcceptDependency(request, param.range); + dep.optional = true; + dep.loc = Object.create(expr.loc); + dep.loc.index = idx; + parser.state.module.addDependency(dep); + requests.push(request); + }); + if (expr.arguments.length > 1) { + parser.hooks.hotAcceptCallback.call( + expr.arguments[1], + requests + ); + parser.walkExpression(expr.arguments[1]); // other args are ignored + return true; + } else { + parser.hooks.hotAcceptWithoutCallback.call(expr, requests); + return true; + } + } + } + }); + parser.hooks.call + .for("module.hot.decline") + .tap("HotModuleReplacementPlugin", expr => { + if (!parser.state.compilation.hotUpdateChunkTemplate) { + return false; + } + if (expr.arguments.length === 1) { + const arg = parser.evaluateExpression(expr.arguments[0]); + let params = []; + if (arg.isString()) { + params = [arg]; + } else if (arg.isArray()) { + params = arg.items.filter(param => param.isString()); + } + params.forEach((param, idx) => { + const dep = new ModuleHotDeclineDependency( + param.string, + param.range + ); + dep.optional = true; + dep.loc = Object.create(expr.loc); + dep.loc.index = idx; + parser.state.module.addDependency(dep); + }); + } + }); + parser.hooks.expression + .for("module.hot") + .tap("HotModuleReplacementPlugin", ParserHelpers.skipTraversal); + }; + compiler.hooks.compilation.tap( "HotModuleReplacementPlugin", (compilation, { normalModuleFactory }) => { @@ -275,127 +387,13 @@ module.exports = class HotModuleReplacementPlugin { } ); - const handler = (parser, parserOptions) => { - parser.hooks.expression - .for("__webpack_hash__") - .tap( - "HotModuleReplacementPlugin", - ParserHelpers.toConstantDependencyWithWebpackRequire( - parser, - "__webpack_require__.h()" - ) - ); - parser.hooks.evaluateTypeof - .for("__webpack_hash__") - .tap( - "HotModuleReplacementPlugin", - ParserHelpers.evaluateToString("string") - ); - parser.hooks.evaluateIdentifier.for("module.hot").tap( - { - name: "HotModuleReplacementPlugin", - before: "NodeStuffPlugin" - }, - expr => { - return ParserHelpers.evaluateToIdentifier( - "module.hot", - !!parser.state.compilation.hotUpdateChunkTemplate - )(expr); - } - ); - // TODO webpack 5: refactor this, no custom hooks - if (!parser.hooks.hotAcceptCallback) { - parser.hooks.hotAcceptCallback = new SyncBailHook([ - "expression", - "requests" - ]); - } - if (!parser.hooks.hotAcceptWithoutCallback) { - parser.hooks.hotAcceptWithoutCallback = new SyncBailHook([ - "expression", - "requests" - ]); - } - parser.hooks.call - .for("module.hot.accept") - .tap("HotModuleReplacementPlugin", expr => { - if (!parser.state.compilation.hotUpdateChunkTemplate) { - return false; - } - if (expr.arguments.length >= 1) { - const arg = parser.evaluateExpression(expr.arguments[0]); - let params = []; - let requests = []; - if (arg.isString()) { - params = [arg]; - } else if (arg.isArray()) { - params = arg.items.filter(param => param.isString()); - } - if (params.length > 0) { - params.forEach((param, idx) => { - const request = param.string; - const dep = new ModuleHotAcceptDependency( - request, - param.range - ); - dep.optional = true; - dep.loc = Object.create(expr.loc); - dep.loc.index = idx; - parser.state.module.addDependency(dep); - requests.push(request); - }); - if (expr.arguments.length > 1) { - parser.hooks.hotAcceptCallback.call( - expr.arguments[1], - requests - ); - parser.walkExpression(expr.arguments[1]); // other args are ignored - return true; - } else { - parser.hooks.hotAcceptWithoutCallback.call(expr, requests); - return true; - } - } - } - }); - parser.hooks.call - .for("module.hot.decline") - .tap("HotModuleReplacementPlugin", expr => { - if (!parser.state.compilation.hotUpdateChunkTemplate) { - return false; - } - if (expr.arguments.length === 1) { - const arg = parser.evaluateExpression(expr.arguments[0]); - let params = []; - if (arg.isString()) { - params = [arg]; - } else if (arg.isArray()) { - params = arg.items.filter(param => param.isString()); - } - params.forEach((param, idx) => { - const dep = new ModuleHotDeclineDependency( - param.string, - param.range - ); - dep.optional = true; - dep.loc = Object.create(expr.loc); - dep.loc.index = idx; - parser.state.module.addDependency(dep); - }); - } - }); - parser.hooks.expression - .for("module.hot") - .tap("HotModuleReplacementPlugin", ParserHelpers.skipTraversal); - }; - // TODO add HMR support for javascript/esm normalModuleFactory.hooks.parser .for("javascript/auto") - .tap("HotModuleReplacementPlugin", handler); + .tap("HotModuleReplacementPlugin", addParserPlugins); normalModuleFactory.hooks.parser .for("javascript/dynamic") - .tap("HotModuleReplacementPlugin", handler); + .tap("HotModuleReplacementPlugin", addParserPlugins); compilation.hooks.normalModuleLoader.tap( "HotModuleReplacementPlugin", From 64b22c4806f0888f99081c322266d584d24fbed9 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 5 Jul 2018 12:50:51 +0200 Subject: [PATCH 07/41] make the cache a WeakMap to not leak memory fixes #6929 --- lib/optimize/SplitChunksPlugin.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/optimize/SplitChunksPlugin.js b/lib/optimize/SplitChunksPlugin.js index d56e2699399..60293603bf8 100644 --- a/lib/optimize/SplitChunksPlugin.js +++ b/lib/optimize/SplitChunksPlugin.js @@ -135,7 +135,8 @@ module.exports = class SplitChunksPlugin { static normalizeName({ name, automaticNameDelimiter }) { if (name === true) { - const cache = new Map(); + /** @type {WeakMap>} */ + const cache = new WeakMap(); const fn = (module, chunks, cacheGroup) => { let cacheEntry = cache.get(chunks); if (cacheEntry === undefined) { From 8e8f1856e95dd59bfe9313e07f9e25e2ac6c062c Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 5 Jul 2018 13:19:55 +0200 Subject: [PATCH 08/41] fixes usage of automaticNameDelimiter in cache groups --- lib/optimize/SplitChunksPlugin.js | 5 + .../__snapshots__/StatsTestCases.test.js.snap | 148 ++++++++++-------- .../statsCases/split-chunks-max-size/index.js | 5 + .../split-chunks-max-size/node_modules/big.js | 4 + .../node_modules/small.js | 1 + .../node_modules/very-big.js | 24 +++ .../split-chunks-max-size/webpack.config.js | 6 +- 7 files changed, 125 insertions(+), 68 deletions(-) create mode 100644 test/statsCases/split-chunks-max-size/node_modules/big.js create mode 100644 test/statsCases/split-chunks-max-size/node_modules/small.js create mode 100644 test/statsCases/split-chunks-max-size/node_modules/very-big.js diff --git a/lib/optimize/SplitChunksPlugin.js b/lib/optimize/SplitChunksPlugin.js index d56e2699399..e607230a6df 100644 --- a/lib/optimize/SplitChunksPlugin.js +++ b/lib/optimize/SplitChunksPlugin.js @@ -126,6 +126,7 @@ module.exports = class SplitChunksPlugin { cacheGroups: options.cacheGroups, automaticNameDelimiter: options.automaticNameDelimiter }), + automaticNameDelimiter: options.automaticNameDelimiter, fallbackCacheGroup: SplitChunksPlugin.normalizeFallbackCacheGroup( options.fallbackCacheGroup || {}, options @@ -556,6 +557,10 @@ module.exports = class SplitChunksPlugin { cacheGroupSource.filename !== undefined ? cacheGroupSource.filename : this.options.filename, + automaticNameDelimiter: + cacheGroupSource.automaticNameDelimiter !== undefined + ? cacheGroupSource.automaticNameDelimiter + : this.options.automaticNameDelimiter, reuseExistingChunk: cacheGroupSource.reuseExistingChunk }; // For all combination of chunk selection diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index ca7b99a36fc..babc4a7d2c5 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -2774,90 +2774,98 @@ chunk {3} b.js (b) 43 bytes >{0}< >{1}< [entry] [rendered] exports[`StatsTestCases should print correct stats for split-chunks-max-size 1`] = ` "Child production: - Entrypoint main = prod-main~6e7ead72.js prod-main~6a2ae26b.js prod-main~17acad98.js prod-main~b2c7414a.js prod-main~75f09de8.js prod-main~052b3814.js prod-main~3ff27526.js prod-main~11485824.js prod-main~c6931360.js prod-main~cd7c5bfc.js prod-main~02369f19.js - chunk {0} prod-main~02369f19.js (main~02369f19) 1.57 KiB ={1}= ={10}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [entry] [rendered] + Entrypoint main = prod-vendors~main~7274e1de.js prod-vendors~main~0feae4ad.js prod-main~6e7ead72.js prod-main~6a2ae26b.js prod-main~17acad98.js prod-main~b2c7414a.js prod-main~75f09de8.js prod-main~052b3814.js prod-main~3ff27526.js prod-main~11485824.js prod-main~c6931360.js prod-main~cd7c5bfc.js prod-main~02369f19.js + chunk {0} prod-main~02369f19.js (main~02369f19) 1.57 KiB ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [entry] [rendered] > ./ main [11] ./very-big.js?1 1.57 KiB {0} [built] - chunk {1} prod-main~6e7ead72.js (main~6e7ead72) 536 bytes ={0}= ={10}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + chunk {1} prod-vendors~main~0feae4ad.js (vendors~main~0feae4ad) 1.57 KiB ={0}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~main) > ./ main - [0] ./big.js?1 268 bytes {1} [built] - [1] ./big.js?2 268 bytes {1} [built] - chunk {2} prod-main~6a2ae26b.js (main~6a2ae26b) 536 bytes ={0}= ={1}= ={10}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + [43] ./node_modules/very-big.js?1 1.57 KiB {1} [built] + chunk {2} prod-main~6e7ead72.js (main~6e7ead72) 536 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] > ./ main - [34] ./in-some-directory/big.js?1 268 bytes {2} [built] - [35] ./in-some-directory/small.js?1 67 bytes {2} [built] - [36] ./in-some-directory/small.js?2 67 bytes {2} [built] - [37] ./in-some-directory/small.js?3 67 bytes {2} [built] - [38] ./in-some-directory/small.js?4 67 bytes {2} [built] - chunk {3} prod-main~17acad98.js (main~17acad98) 1.57 KiB ={0}= ={1}= ={10}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + [0] ./big.js?1 268 bytes {2} [built] + [1] ./big.js?2 268 bytes {2} [built] + chunk {3} prod-main~6a2ae26b.js (main~6a2ae26b) 536 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] > ./ main - [39] ./in-some-directory/very-big.js?1 1.57 KiB {3} [built] - chunk {4} prod-main~b2c7414a.js (main~b2c7414a) 1.11 KiB ={0}= ={1}= ={10}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + [34] ./in-some-directory/big.js?1 268 bytes {3} [built] + [35] ./in-some-directory/small.js?1 67 bytes {3} [built] + [36] ./in-some-directory/small.js?2 67 bytes {3} [built] + [37] ./in-some-directory/small.js?3 67 bytes {3} [built] + [38] ./in-some-directory/small.js?4 67 bytes {3} [built] + chunk {4} prod-main~17acad98.js (main~17acad98) 1.57 KiB ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] > ./ main - [40] ./index.js 1.11 KiB {4} [built] - chunk {5} prod-main~75f09de8.js (main~75f09de8) 603 bytes ={0}= ={1}= ={10}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + [39] ./in-some-directory/very-big.js?1 1.57 KiB {4} [built] + chunk {5} prod-main~b2c7414a.js (main~b2c7414a) 1.19 KiB ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] > ./ main - [25] ./inner-module/small.js?1 67 bytes {5} [built] - [26] ./inner-module/small.js?2 67 bytes {5} [built] - [27] ./inner-module/small.js?3 67 bytes {5} [built] - [28] ./inner-module/small.js?4 67 bytes {5} [built] - [29] ./inner-module/small.js?5 67 bytes {5} [built] - [30] ./inner-module/small.js?6 67 bytes {5} [built] - [31] ./inner-module/small.js?7 67 bytes {5} [built] - [32] ./inner-module/small.js?8 67 bytes {5} [built] - [33] ./inner-module/small.js?9 67 bytes {5} [built] - chunk {6} prod-main~052b3814.js (main~052b3814) 603 bytes ={0}= ={1}= ={10}= ={2}= ={3}= ={4}= ={5}= ={7}= ={8}= ={9}= [initial] [rendered] + [44] ./index.js 1.19 KiB {5} [built] + chunk {6} prod-main~75f09de8.js (main~75f09de8) 603 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={7}= ={8}= ={9}= [initial] [rendered] > ./ main - [2] ./small.js?1 67 bytes {6} [built] - [3] ./small.js?2 67 bytes {6} [built] - [4] ./small.js?3 67 bytes {6} [built] - [5] ./small.js?4 67 bytes {6} [built] - [6] ./small.js?5 67 bytes {6} [built] - [7] ./small.js?6 67 bytes {6} [built] - [8] ./small.js?7 67 bytes {6} [built] - [9] ./small.js?8 67 bytes {6} [built] - [10] ./small.js?9 67 bytes {6} [built] - chunk {7} prod-main~3ff27526.js (main~3ff27526) 536 bytes ={0}= ={1}= ={10}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= ={9}= [initial] [rendered] + [25] ./inner-module/small.js?1 67 bytes {6} [built] + [26] ./inner-module/small.js?2 67 bytes {6} [built] + [27] ./inner-module/small.js?3 67 bytes {6} [built] + [28] ./inner-module/small.js?4 67 bytes {6} [built] + [29] ./inner-module/small.js?5 67 bytes {6} [built] + [30] ./inner-module/small.js?6 67 bytes {6} [built] + [31] ./inner-module/small.js?7 67 bytes {6} [built] + [32] ./inner-module/small.js?8 67 bytes {6} [built] + [33] ./inner-module/small.js?9 67 bytes {6} [built] + chunk {7} prod-main~052b3814.js (main~052b3814) 603 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= ={9}= [initial] [rendered] > ./ main - [14] ./subfolder/big.js?1 268 bytes {7} [built] - [15] ./subfolder/big.js?2 268 bytes {7} [built] - chunk {8} prod-main~11485824.js (main~11485824) 603 bytes ={0}= ={1}= ={10}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={9}= [initial] [rendered] + [2] ./small.js?1 67 bytes {7} [built] + [3] ./small.js?2 67 bytes {7} [built] + [4] ./small.js?3 67 bytes {7} [built] + [5] ./small.js?4 67 bytes {7} [built] + [6] ./small.js?5 67 bytes {7} [built] + [7] ./small.js?6 67 bytes {7} [built] + [8] ./small.js?7 67 bytes {7} [built] + [9] ./small.js?8 67 bytes {7} [built] + [10] ./small.js?9 67 bytes {7} [built] + chunk {8} prod-main~3ff27526.js (main~3ff27526) 536 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={9}= [initial] [rendered] > ./ main - [16] ./subfolder/small.js?1 67 bytes {8} [built] - [17] ./subfolder/small.js?2 67 bytes {8} [built] - [18] ./subfolder/small.js?3 67 bytes {8} [built] - [19] ./subfolder/small.js?4 67 bytes {8} [built] - [20] ./subfolder/small.js?5 67 bytes {8} [built] - [21] ./subfolder/small.js?6 67 bytes {8} [built] - [22] ./subfolder/small.js?7 67 bytes {8} [built] - [23] ./subfolder/small.js?8 67 bytes {8} [built] - [24] ./subfolder/small.js?9 67 bytes {8} [built] - chunk {9} prod-main~c6931360.js (main~c6931360) 1.57 KiB ={0}= ={1}= ={10}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= [initial] [rendered] + [14] ./subfolder/big.js?1 268 bytes {8} [built] + [15] ./subfolder/big.js?2 268 bytes {8} [built] + chunk {9} prod-main~11485824.js (main~11485824) 603 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= [initial] [rendered] > ./ main - [12] ./very-big.js?2 1.57 KiB {9} [built] - chunk {10} prod-main~cd7c5bfc.js (main~cd7c5bfc) 1.57 KiB ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + [16] ./subfolder/small.js?1 67 bytes {9} [built] + [17] ./subfolder/small.js?2 67 bytes {9} [built] + [18] ./subfolder/small.js?3 67 bytes {9} [built] + [19] ./subfolder/small.js?4 67 bytes {9} [built] + [20] ./subfolder/small.js?5 67 bytes {9} [built] + [21] ./subfolder/small.js?6 67 bytes {9} [built] + [22] ./subfolder/small.js?7 67 bytes {9} [built] + [23] ./subfolder/small.js?8 67 bytes {9} [built] + [24] ./subfolder/small.js?9 67 bytes {9} [built] + chunk {10} prod-main~c6931360.js (main~c6931360) 1.57 KiB ={0}= ={1}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] > ./ main - [13] ./very-big.js?3 1.57 KiB {10} [built] + [12] ./very-big.js?2 1.57 KiB {10} [built] + chunk {11} prod-main~cd7c5bfc.js (main~cd7c5bfc) 1.57 KiB ={0}= ={1}= ={10}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + > ./ main + [13] ./very-big.js?3 1.57 KiB {11} [built] + chunk {12} prod-vendors~main~7274e1de.js (vendors~main~7274e1de) 402 bytes ={0}= ={1}= ={10}= ={11}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + > ./ main + [40] ./node_modules/big.js?1 268 bytes {12} [built] + [41] ./node_modules/small.js?1 67 bytes {12} [built] + [42] ./node_modules/small.js?2 67 bytes {12} [built] Child development: - Entrypoint main = dev-main~._big.js~1.js dev-main~._in-some-directory_b.js dev-main~._in-some-directory_very-big.js~8d76cf03.js dev-main~._index.js~41f5a26e.js dev-main~._inner-module_small.js~3.js dev-main~._small.js~1.js dev-main~._subfolder_big.js~b.js dev-main~._subfolder_small.js~1.js dev-main~._very-big.js~08cf55cf.js dev-main~._very-big.js~4647fb9d.js dev-main~._very-big.js~62f7f644.js - chunk {main~._big.js~1} dev-main~._big.js~1.js (main~._big.js~1) 536 bytes ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + Entrypoint main = dev-vendors~main~._node_modules_b.js dev-vendors~main~._node_modules_very-big.js~6bdbed7b.js dev-main~._big.js~1.js dev-main~._in-some-directory_b.js dev-main~._in-some-directory_very-big.js~8d76cf03.js dev-main~._index.js~41f5a26e.js dev-main~._inner-module_small.js~3.js dev-main~._small.js~1.js dev-main~._subfolder_big.js~b.js dev-main~._subfolder_small.js~1.js dev-main~._very-big.js~08cf55cf.js dev-main~._very-big.js~4647fb9d.js dev-main~._very-big.js~62f7f644.js + chunk {main~._big.js~1} dev-main~._big.js~1.js (main~._big.js~1) 536 bytes ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] > ./ main [./big.js?1] 268 bytes {main~._big.js~1} [built] [./big.js?2] 268 bytes {main~._big.js~1} [built] - chunk {main~._in-some-directory_b} dev-main~._in-some-directory_b.js (main~._in-some-directory_b) 536 bytes ={main~._big.js~1}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + chunk {main~._in-some-directory_b} dev-main~._in-some-directory_b.js (main~._in-some-directory_b) 536 bytes ={main~._big.js~1}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] > ./ main [./in-some-directory/big.js?1] 268 bytes {main~._in-some-directory_b} [built] [./in-some-directory/small.js?1] 67 bytes {main~._in-some-directory_b} [built] [./in-some-directory/small.js?2] 67 bytes {main~._in-some-directory_b} [built] [./in-some-directory/small.js?3] 67 bytes {main~._in-some-directory_b} [built] [./in-some-directory/small.js?4] 67 bytes {main~._in-some-directory_b} [built] - chunk {main~._in-some-directory_very-big.js~8d76cf03} dev-main~._in-some-directory_very-big.js~8d76cf03.js (main~._in-some-directory_very-big.js~8d76cf03) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + chunk {main~._in-some-directory_very-big.js~8d76cf03} dev-main~._in-some-directory_very-big.js~8d76cf03.js (main~._in-some-directory_very-big.js~8d76cf03) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] > ./ main [./in-some-directory/very-big.js?1] 1.57 KiB {main~._in-some-directory_very-big.js~8d76cf03} [built] - chunk {main~._index.js~41f5a26e} dev-main~._index.js~41f5a26e.js (main~._index.js~41f5a26e) 1.11 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + chunk {main~._index.js~41f5a26e} dev-main~._index.js~41f5a26e.js (main~._index.js~41f5a26e) 1.19 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] > ./ main - [./index.js] 1.11 KiB {main~._index.js~41f5a26e} [built] - chunk {main~._inner-module_small.js~3} dev-main~._inner-module_small.js~3.js (main~._inner-module_small.js~3) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + [./index.js] 1.19 KiB {main~._index.js~41f5a26e} [built] + chunk {main~._inner-module_small.js~3} dev-main~._inner-module_small.js~3.js (main~._inner-module_small.js~3) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] > ./ main [./inner-module/small.js?1] 67 bytes {main~._inner-module_small.js~3} [built] [./inner-module/small.js?2] 67 bytes {main~._inner-module_small.js~3} [built] @@ -2868,7 +2876,7 @@ Child development: [./inner-module/small.js?7] 67 bytes {main~._inner-module_small.js~3} [built] [./inner-module/small.js?8] 67 bytes {main~._inner-module_small.js~3} [built] [./inner-module/small.js?9] 67 bytes {main~._inner-module_small.js~3} [built] - chunk {main~._small.js~1} dev-main~._small.js~1.js (main~._small.js~1) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + chunk {main~._small.js~1} dev-main~._small.js~1.js (main~._small.js~1) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] > ./ main [./small.js?1] 67 bytes {main~._small.js~1} [built] [./small.js?2] 67 bytes {main~._small.js~1} [built] @@ -2879,11 +2887,11 @@ Child development: [./small.js?7] 67 bytes {main~._small.js~1} [built] [./small.js?8] 67 bytes {main~._small.js~1} [built] [./small.js?9] 67 bytes {main~._small.js~1} [built] - chunk {main~._subfolder_big.js~b} dev-main~._subfolder_big.js~b.js (main~._subfolder_big.js~b) 536 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + chunk {main~._subfolder_big.js~b} dev-main~._subfolder_big.js~b.js (main~._subfolder_big.js~b) 536 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] > ./ main [./subfolder/big.js?1] 268 bytes {main~._subfolder_big.js~b} [built] [./subfolder/big.js?2] 268 bytes {main~._subfolder_big.js~b} [built] - chunk {main~._subfolder_small.js~1} dev-main~._subfolder_small.js~1.js (main~._subfolder_small.js~1) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + chunk {main~._subfolder_small.js~1} dev-main~._subfolder_small.js~1.js (main~._subfolder_small.js~1) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] > ./ main [./subfolder/small.js?1] 67 bytes {main~._subfolder_small.js~1} [built] [./subfolder/small.js?2] 67 bytes {main~._subfolder_small.js~1} [built] @@ -2894,15 +2902,23 @@ Child development: [./subfolder/small.js?7] 67 bytes {main~._subfolder_small.js~1} [built] [./subfolder/small.js?8] 67 bytes {main~._subfolder_small.js~1} [built] [./subfolder/small.js?9] 67 bytes {main~._subfolder_small.js~1} [built] - chunk {main~._very-big.js~08cf55cf} dev-main~._very-big.js~08cf55cf.js (main~._very-big.js~08cf55cf) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + chunk {main~._very-big.js~08cf55cf} dev-main~._very-big.js~08cf55cf.js (main~._very-big.js~08cf55cf) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] > ./ main [./very-big.js?2] 1.57 KiB {main~._very-big.js~08cf55cf} [built] - chunk {main~._very-big.js~4647fb9d} dev-main~._very-big.js~4647fb9d.js (main~._very-big.js~4647fb9d) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~62f7f644}= [initial] [rendered] + chunk {main~._very-big.js~4647fb9d} dev-main~._very-big.js~4647fb9d.js (main~._very-big.js~4647fb9d) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] > ./ main [./very-big.js?3] 1.57 KiB {main~._very-big.js~4647fb9d} [built] - chunk {main~._very-big.js~62f7f644} dev-main~._very-big.js~62f7f644.js (main~._very-big.js~62f7f644) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= [entry] [rendered] + chunk {main~._very-big.js~62f7f644} dev-main~._very-big.js~62f7f644.js (main~._very-big.js~62f7f644) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [entry] [rendered] + > ./ main + [./very-big.js?1] 1.57 KiB {main~._very-big.js~62f7f644} [built] + chunk {vendors~main~._node_modules_b} dev-vendors~main~._node_modules_b.js (vendors~main~._node_modules_b) 402 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./node_modules/big.js?1] 268 bytes {vendors~main~._node_modules_b} [built] + [./node_modules/small.js?1] 67 bytes {vendors~main~._node_modules_b} [built] + [./node_modules/small.js?2] 67 bytes {vendors~main~._node_modules_b} [built] + chunk {vendors~main~._node_modules_very-big.js~6bdbed7b} dev-vendors~main~._node_modules_very-big.js~6bdbed7b.js (vendors~main~._node_modules_very-big.js~6bdbed7b) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~main) > ./ main - [./very-big.js?1] 1.57 KiB {main~._very-big.js~62f7f644} [built]" + [./node_modules/very-big.js?1] 1.57 KiB {vendors~main~._node_modules_very-big.js~6bdbed7b} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-prefer-bigger-splits 1`] = ` diff --git a/test/statsCases/split-chunks-max-size/index.js b/test/statsCases/split-chunks-max-size/index.js index 5b5a81edd66..28dd561398c 100644 --- a/test/statsCases/split-chunks-max-size/index.js +++ b/test/statsCases/split-chunks-max-size/index.js @@ -41,3 +41,8 @@ import "./in-some-directory/small?2"; import "./in-some-directory/small?3"; import "./in-some-directory/small?4"; import "./in-some-directory/very-big?1"; + +import "big?1"; +import "small?1"; +import "small?2"; +import "very-big?1"; diff --git a/test/statsCases/split-chunks-max-size/node_modules/big.js b/test/statsCases/split-chunks-max-size/node_modules/big.js new file mode 100644 index 00000000000..40380e42352 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/node_modules/big.js @@ -0,0 +1,4 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/node_modules/small.js b/test/statsCases/split-chunks-max-size/node_modules/small.js new file mode 100644 index 00000000000..1f44b439eae --- /dev/null +++ b/test/statsCases/split-chunks-max-size/node_modules/small.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/node_modules/very-big.js b/test/statsCases/split-chunks-max-size/node_modules/very-big.js new file mode 100644 index 00000000000..4c943771c37 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/node_modules/very-big.js @@ -0,0 +1,24 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/webpack.config.js b/test/statsCases/split-chunks-max-size/webpack.config.js index 3987fc2a86f..d153a580913 100644 --- a/test/statsCases/split-chunks-max-size/webpack.config.js +++ b/test/statsCases/split-chunks-max-size/webpack.config.js @@ -21,7 +21,8 @@ module.exports = [ optimization: { splitChunks: { minSize: 100, - maxSize: 1000 + maxSize: 1000, + chunks: "all" } }, stats @@ -38,7 +39,8 @@ module.exports = [ optimization: { splitChunks: { minSize: 100, - maxSize: 1000 + maxSize: 1000, + chunks: "all" } }, stats From 14968acc000d40dcc67b7ba8911dca40ce611f51 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 2 Jul 2018 10:15:13 +0200 Subject: [PATCH 09/41] add automaticNamePrefix option allow automaticNameDelimiter on cacheGroup level --- lib/WebpackOptionsDefaulter.js | 2 ++ lib/optimize/SplitChunksPlugin.js | 33 +++++++++++++++++-------------- schemas/WebpackOptions.json | 9 +++++++++ 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/lib/WebpackOptionsDefaulter.js b/lib/WebpackOptionsDefaulter.js index 3f9da0b72d2..f711b27de2f 100644 --- a/lib/WebpackOptionsDefaulter.js +++ b/lib/WebpackOptionsDefaulter.js @@ -233,11 +233,13 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { this.set("optimization.splitChunks.name", true); this.set("optimization.splitChunks.cacheGroups", {}); this.set("optimization.splitChunks.cacheGroups.default", { + automaticNamePrefix: "", reuseExistingChunk: true, minChunks: 2, priority: -20 }); this.set("optimization.splitChunks.cacheGroups.vendors", { + automaticNamePrefix: "vendors", test: /[\\/]node_modules[\\/]/, priority: -10 }); diff --git a/lib/optimize/SplitChunksPlugin.js b/lib/optimize/SplitChunksPlugin.js index d56e2699399..c33fec9db3e 100644 --- a/lib/optimize/SplitChunksPlugin.js +++ b/lib/optimize/SplitChunksPlugin.js @@ -115,15 +115,11 @@ module.exports = class SplitChunksPlugin { minChunks: options.minChunks || 1, maxAsyncRequests: options.maxAsyncRequests || 1, maxInitialRequests: options.maxInitialRequests || 1, - getName: - SplitChunksPlugin.normalizeName({ - name: options.name, - automaticNameDelimiter: options.automaticNameDelimiter - }) || (() => {}), hidePathInfo: options.hidePathInfo || false, filename: options.filename || undefined, getCacheGroups: SplitChunksPlugin.normalizeCacheGroups({ cacheGroups: options.cacheGroups, + name: options.name, automaticNameDelimiter: options.automaticNameDelimiter }), fallbackCacheGroup: SplitChunksPlugin.normalizeFallbackCacheGroup( @@ -133,7 +129,7 @@ module.exports = class SplitChunksPlugin { }; } - static normalizeName({ name, automaticNameDelimiter }) { + static normalizeName({ name, automaticNameDelimiter, automaticNamePrefix }) { if (name === true) { const cache = new Map(); const fn = (module, chunks, cacheGroup) => { @@ -150,10 +146,12 @@ module.exports = class SplitChunksPlugin { return; } names.sort(); - let name = - (cacheGroup && cacheGroup !== "default" - ? cacheGroup + automaticNameDelimiter - : "") + names.join(automaticNameDelimiter); + const prefix = + typeof automaticNamePrefix === "string" + ? automaticNamePrefix + : cacheGroup; + const namePrefix = prefix ? prefix + automaticNameDelimiter : ""; + let name = namePrefix + names.join(automaticNameDelimiter); // Filenames and paths can't be too long otherwise an // ENAMETOOLONG error is raised. If the generated name if too // long, it is truncated and a hash is appended. The limit has @@ -210,7 +208,7 @@ module.exports = class SplitChunksPlugin { }; } - static normalizeCacheGroups({ cacheGroups, automaticNameDelimiter }) { + static normalizeCacheGroups({ cacheGroups, name, automaticNameDelimiter }) { if (typeof cacheGroups === "function") { // TODO webpack 5 remove this if (cacheGroups.length !== 1) { @@ -249,10 +247,15 @@ module.exports = class SplitChunksPlugin { results.push({ key: key, priority: option.priority, - getName: SplitChunksPlugin.normalizeName({ - name: option.name, - automaticNameDelimiter - }), + getName: + SplitChunksPlugin.normalizeName({ + name: option.name || name, + automaticNameDelimiter: + typeof option.automaticNameDelimiter === "string" + ? option.automaticNameDelimiter + : automaticNameDelimiter, + automaticNamePrefix: option.automaticNamePrefix + }) || (() => {}), chunksFilter: SplitChunksPlugin.normalizeChunksFilter( option.chunks ), diff --git a/schemas/WebpackOptions.json b/schemas/WebpackOptions.json index 7581fe8dd22..0ee1440b1fb 100644 --- a/schemas/WebpackOptions.json +++ b/schemas/WebpackOptions.json @@ -1529,6 +1529,15 @@ } ] }, + "automaticNameDelimiter": { + "description": "Sets the name delimiter for created chunks", + "type": "string", + "minLength": 1 + }, + "automaticNamePrefix": { + "description": "Sets the name prefix for created chunks", + "type": "string" + }, "filename": { "description": "Sets the template for the filename for created chunks (Only works for initial chunks)", "type": "string", From 9344801fb781418bc76eade7f3ce65c9790d488e Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 5 Jul 2018 14:39:07 +0200 Subject: [PATCH 10/41] fix wrong priority handling when merging multiple cache groups by name --- lib/optimize/SplitChunksPlugin.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/optimize/SplitChunksPlugin.js b/lib/optimize/SplitChunksPlugin.js index c33fec9db3e..da1469e0f6a 100644 --- a/lib/optimize/SplitChunksPlugin.js +++ b/lib/optimize/SplitChunksPlugin.js @@ -488,6 +488,12 @@ module.exports = class SplitChunksPlugin { chunksKeys: new Set() }) ); + } else { + if (info.cacheGroup !== cacheGroup) { + if (info.cacheGroup.priority < cacheGroup.priority) { + info.cacheGroup = cacheGroup; + } + } } info.modules.add(module); info.size += module.size(); From 0c2ea9d5d0e50c33547291c178d55e1bc6cf78ad Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 5 Jul 2018 14:39:17 +0200 Subject: [PATCH 11/41] add test case --- .../__snapshots__/StatsTestCases.test.js.snap | 35 ++++++++++++++++++ .../split-chunks-automatic-name/a.js | 5 +++ .../split-chunks-automatic-name/b.js | 5 +++ .../split-chunks-automatic-name/c.js | 5 +++ .../split-chunks-automatic-name/d.js | 1 + .../split-chunks-automatic-name/e.js | 1 + .../split-chunks-automatic-name/f.js | 1 + .../split-chunks-automatic-name/index.js | 3 ++ .../node_modules/x.js | 1 + .../node_modules/y.js | 1 + .../node_modules/z.js | 1 + .../webpack.config.js | 37 +++++++++++++++++++ 12 files changed, 96 insertions(+) create mode 100644 test/statsCases/split-chunks-automatic-name/a.js create mode 100644 test/statsCases/split-chunks-automatic-name/b.js create mode 100644 test/statsCases/split-chunks-automatic-name/c.js create mode 100644 test/statsCases/split-chunks-automatic-name/d.js create mode 100644 test/statsCases/split-chunks-automatic-name/e.js create mode 100644 test/statsCases/split-chunks-automatic-name/f.js create mode 100644 test/statsCases/split-chunks-automatic-name/index.js create mode 100644 test/statsCases/split-chunks-automatic-name/node_modules/x.js create mode 100644 test/statsCases/split-chunks-automatic-name/node_modules/y.js create mode 100644 test/statsCases/split-chunks-automatic-name/node_modules/z.js create mode 100644 test/statsCases/split-chunks-automatic-name/webpack.config.js diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index ca7b99a36fc..eaa9047160a 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -2671,6 +2671,41 @@ Child custom-chunks-filter-in-cache-groups: [5] ./c.js 72 bytes {3} {8} [built]" `; +exports[`StatsTestCases should print correct stats for split-chunks-automatic-name 1`] = ` +"Entrypoint main = main.js +chunk {0} common~async-a~async-b~async-c.js (common~async-a~async-b~async-c) 40 bytes <{7}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= [rendered] split chunk (cache group: vendors) (name: common~async-a~async-b~async-c) + > ./a [8] ./index.js 1:0-47 + > ./b [8] ./index.js 2:0-47 + > ./c [8] ./index.js 3:0-47 + [0] ./d.js 20 bytes {0} [built] + [1] ./node_modules/x.js 20 bytes {0} [built] +chunk {1} common~async-b~async-c.js (common~async-b~async-c) 20 bytes <{7}> ={0}= ={2}= ={4}= ={5}= ={6}= [rendered] split chunk (cache group: vendors) (name: common~async-b~async-c) + > ./b [8] ./index.js 2:0-47 + > ./c [8] ./index.js 3:0-47 + [3] ./f.js 20 bytes {1} [built] +chunk {2} common~async-a~async-b.js (common~async-a~async-b) 20 bytes <{7}> ={0}= ={1}= ={3}= ={4}= [rendered] split chunk (cache group: vendors) (name: common~async-a~async-b) + > ./a [8] ./index.js 1:0-47 + > ./b [8] ./index.js 2:0-47 + [2] ./node_modules/y.js 20 bytes {2} [built] +chunk {3} async-a.js (async-a) 107 bytes <{7}> ={0}= ={2}= [rendered] + > ./a [8] ./index.js 1:0-47 + [7] ./a.js + 1 modules 107 bytes {3} [built] + | ./a.js 72 bytes [built] + | ./e.js 20 bytes [built] +chunk {4} async-b.js (async-b) 72 bytes <{7}> ={0}= ={1}= ={2}= [rendered] + > ./b [8] ./index.js 2:0-47 + [5] ./b.js 72 bytes {4} [built] +chunk {5} async-c.js (async-c) 72 bytes <{7}> ={0}= ={1}= ={6}= [rendered] + > ./c [8] ./index.js 3:0-47 + [6] ./c.js 72 bytes {5} [built] +chunk {6} common~async-c.js (common~async-c) 20 bytes <{7}> ={0}= ={1}= ={5}= [rendered] split chunk (cache group: vendors) (name: common~async-c) + > ./c [8] ./index.js 3:0-47 + [4] ./node_modules/z.js 20 bytes {6} [built] +chunk {7} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {7} [built]" +`; + exports[`StatsTestCases should print correct stats for split-chunks-combinations 1`] = ` "Entrypoint main = main.js chunk {0} async-a~async-b.js (async-a~async-b) 134 bytes <{8}> ={1}= ={2}= [rendered] split chunk (cache group: default) (name: async-a~async-b) diff --git a/test/statsCases/split-chunks-automatic-name/a.js b/test/statsCases/split-chunks-automatic-name/a.js new file mode 100644 index 00000000000..1fcabdcfdc0 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/a.js @@ -0,0 +1,5 @@ +import "./d"; +import "./e"; +import "x"; +import "y"; +export default "a"; diff --git a/test/statsCases/split-chunks-automatic-name/b.js b/test/statsCases/split-chunks-automatic-name/b.js new file mode 100644 index 00000000000..fd909a7b63b --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/b.js @@ -0,0 +1,5 @@ +import "./d"; +import "./f"; +import "x"; +import "y"; +export default "b"; diff --git a/test/statsCases/split-chunks-automatic-name/c.js b/test/statsCases/split-chunks-automatic-name/c.js new file mode 100644 index 00000000000..6bbf24bfe50 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/c.js @@ -0,0 +1,5 @@ +import "./d"; +import "./f"; +import "x"; +import "z"; +export default "c"; diff --git a/test/statsCases/split-chunks-automatic-name/d.js b/test/statsCases/split-chunks-automatic-name/d.js new file mode 100644 index 00000000000..987d6d7e401 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/d.js @@ -0,0 +1 @@ +export default "d"; diff --git a/test/statsCases/split-chunks-automatic-name/e.js b/test/statsCases/split-chunks-automatic-name/e.js new file mode 100644 index 00000000000..d97e38b22f5 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/e.js @@ -0,0 +1 @@ +export default "e"; diff --git a/test/statsCases/split-chunks-automatic-name/f.js b/test/statsCases/split-chunks-automatic-name/f.js new file mode 100644 index 00000000000..657d4dee8a8 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/f.js @@ -0,0 +1 @@ +export default "f"; diff --git a/test/statsCases/split-chunks-automatic-name/index.js b/test/statsCases/split-chunks-automatic-name/index.js new file mode 100644 index 00000000000..5dfec91bc71 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/index.js @@ -0,0 +1,3 @@ +import(/* webpackChunkName: "async-a" */ "./a"); +import(/* webpackChunkName: "async-b" */ "./b"); +import(/* webpackChunkName: "async-c" */ "./c"); diff --git a/test/statsCases/split-chunks-automatic-name/node_modules/x.js b/test/statsCases/split-chunks-automatic-name/node_modules/x.js new file mode 100644 index 00000000000..3fd5ecc7a40 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/node_modules/x.js @@ -0,0 +1 @@ +export default "x"; diff --git a/test/statsCases/split-chunks-automatic-name/node_modules/y.js b/test/statsCases/split-chunks-automatic-name/node_modules/y.js new file mode 100644 index 00000000000..413e7c09da6 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/node_modules/y.js @@ -0,0 +1 @@ +export default "y"; diff --git a/test/statsCases/split-chunks-automatic-name/node_modules/z.js b/test/statsCases/split-chunks-automatic-name/node_modules/z.js new file mode 100644 index 00000000000..0b388750767 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/node_modules/z.js @@ -0,0 +1 @@ +export default "z"; diff --git a/test/statsCases/split-chunks-automatic-name/webpack.config.js b/test/statsCases/split-chunks-automatic-name/webpack.config.js new file mode 100644 index 00000000000..8216c7312c7 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/webpack.config.js @@ -0,0 +1,37 @@ +const stats = { + hash: false, + timings: false, + builtAt: false, + assets: false, + chunks: true, + chunkOrigins: true, + entrypoints: true, + modules: false +}; +module.exports = { + name: "production", + mode: "production", + entry: { + main: "./" + }, + optimization: { + splitChunks: { + chunks: "all", + minSize: 1, + cacheGroups: { + default: { + automaticNamePrefix: "common", + reuseExistingChunk: true, + minChunks: 2, + priority: -20 + }, + vendors: { + automaticNamePrefix: "common", + test: /[\\/]node_modules[\\/]/, + priority: -10 + } + } + } + }, + stats +}; From 81149be5c1cd2a3ce70c3abcc179c5070fd6dd1c Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 5 Jul 2018 15:32:32 +0200 Subject: [PATCH 12/41] 4.15.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a22497fff82..2c217e80b9a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "webpack", - "version": "4.15.0", + "version": "4.15.1", "author": "Tobias Koppers @sokra", "description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.", "license": "MIT", From 93a28126a6f732cde7b753ad1a9101225e00beed Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 5 Jul 2018 20:39:47 +0200 Subject: [PATCH 13/41] fixes order for reexported dependencies fixes #7665 --- .../HarmonyExportImportedSpecifierDependency.js | 3 ++- test/cases/side-effects/order-issue-7665/index.js | 7 +++++++ test/cases/side-effects/order-issue-7665/module/a.js | 5 +++++ test/cases/side-effects/order-issue-7665/module/b.js | 5 +++++ test/cases/side-effects/order-issue-7665/module/index.js | 4 ++++ .../side-effects/order-issue-7665/module/package.json | 6 ++++++ test/cases/side-effects/order-issue-7665/tracker.js | 1 + 7 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 test/cases/side-effects/order-issue-7665/index.js create mode 100644 test/cases/side-effects/order-issue-7665/module/a.js create mode 100644 test/cases/side-effects/order-issue-7665/module/b.js create mode 100644 test/cases/side-effects/order-issue-7665/module/index.js create mode 100644 test/cases/side-effects/order-issue-7665/module/package.json create mode 100644 test/cases/side-effects/order-issue-7665/tracker.js diff --git a/lib/dependencies/HarmonyExportImportedSpecifierDependency.js b/lib/dependencies/HarmonyExportImportedSpecifierDependency.js index 360c785b113..1965d0dbb8d 100644 --- a/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +++ b/lib/dependencies/HarmonyExportImportedSpecifierDependency.js @@ -244,7 +244,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency { return new DependencyReference( mode.module, Array.from(mode.map.values()), - false + false, + this.sourceOrder ); case "dynamic-reexport": diff --git a/test/cases/side-effects/order-issue-7665/index.js b/test/cases/side-effects/order-issue-7665/index.js new file mode 100644 index 00000000000..378de0e896e --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/index.js @@ -0,0 +1,7 @@ +import array from "./tracker"; +import { b } from "./module"; + +it("should evaulate modules in the correct order", () => { + expect(b).toEqual("b"); + expect(array).toEqual(["b", "a"]); +}) diff --git a/test/cases/side-effects/order-issue-7665/module/a.js b/test/cases/side-effects/order-issue-7665/module/a.js new file mode 100644 index 00000000000..635f930d2ac --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/module/a.js @@ -0,0 +1,5 @@ +import array from "../tracker"; + +array.push("a"); + +export default "a"; diff --git a/test/cases/side-effects/order-issue-7665/module/b.js b/test/cases/side-effects/order-issue-7665/module/b.js new file mode 100644 index 00000000000..3c47022b329 --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/module/b.js @@ -0,0 +1,5 @@ +import array from "../tracker"; + +array.push("b"); + +export default "b"; diff --git a/test/cases/side-effects/order-issue-7665/module/index.js b/test/cases/side-effects/order-issue-7665/module/index.js new file mode 100644 index 00000000000..6303d91ada7 --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/module/index.js @@ -0,0 +1,4 @@ +import b from './b'; +import './a'; + +export { b }; diff --git a/test/cases/side-effects/order-issue-7665/module/package.json b/test/cases/side-effects/order-issue-7665/module/package.json new file mode 100644 index 00000000000..a4ec69bc4ab --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/module/package.json @@ -0,0 +1,6 @@ +{ + "sideEffects": [ + "./index.js", + "./a.js" + ] +} diff --git a/test/cases/side-effects/order-issue-7665/tracker.js b/test/cases/side-effects/order-issue-7665/tracker.js new file mode 100644 index 00000000000..d6d1738de67 --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/tracker.js @@ -0,0 +1 @@ +export default []; From c38f8d4a63f396adde6e598c82f9eb0c5b0bab01 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 6 Jul 2018 11:10:09 +0200 Subject: [PATCH 14/41] split test cases on CI into smaller pieces --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2c217e80b9a..b6f5c9b309f 100644 --- a/package.json +++ b/package.json @@ -109,11 +109,11 @@ "test:integration": "node --max-old-space-size=4096 --trace-deprecation node_modules/jest-cli/bin/jest --testMatch \"/test/*.test.js\"", "test:basic": "node --max-old-space-size=4096 --trace-deprecation node_modules/jest-cli/bin/jest --testMatch \"/test/{TestCasesNormal,StatsTestCases,ConfigTestCases}.test.js\"", "test:unit": "node --max-old-space-size=4096 --trace-deprecation node_modules/jest-cli/bin/jest --testMatch \"/test/*.unittest.js\"", - "travis:integration": "yarn cover:init && yarn cover:integration \"test/((?!TestCases)|TestCasesD)\" --ci $JEST && mv coverage/coverage-final.json coverage/coverage-final-1.json && yarn cover:integration \"test/TestCases(?!D)\" --ci $JEST && mv coverage/coverage-final.json coverage/coverage-final-2.json", + "travis:integration": "yarn cover:init && yarn cover:integration \"test/(?!TestCases)\" --ci $JEST && mv coverage/coverage-final.json coverage/coverage-final-1.json && yarn cover:integration \"test/TestCasesD\" --ci $JEST && mv coverage/coverage-final.json coverage/coverage-final-2.json && yarn cover:integration \"test/TestCases(?!D)\" --ci $JEST && mv coverage/coverage-final.json coverage/coverage-final-3.json", "travis:basic": "yarn test:basic --ci $JEST", "travis:lint-unit": "yarn lint && yarn cover:init && yarn cover:unit --ci $JEST", "travis:benchmark": "yarn benchmark --ci", - "appveyor:integration": "yarn cover:init && yarn cover:integration \"test/((?!TestCases)|TestCasesD)\" --ci %JEST% && move coverage\\coverage-final.json coverage\\coverage-final-1.json && yarn cover:integration \"test/TestCases(?!D)\" --ci %JEST% && move coverage\\coverage-final.json coverage\\coverage-final-2.json", + "appveyor:integration": "yarn cover:init && yarn cover:integration \"test/(?!TestCases)\" --ci %JEST% && move coverage\\coverage-final.json coverage\\coverage-final-1.json&& yarn cover:integration \"test/TestCasesD\" --ci %JEST% && move coverage\\coverage-final.json coverage\\coverage-final-2.json && yarn cover:integration \"test/TestCases(?!D)\" --ci %JEST% && move coverage\\coverage-final.json coverage\\coverage-final-3.json", "appveyor:unit": "yarn cover:init && yarn cover:unit --ci %JEST%", "appveyor:benchmark": "yarn benchmark --ci", "build:examples": "cd examples && node buildAll.js", From 2d9db1a1f633610b5df6afdbe5455f9ba9274965 Mon Sep 17 00:00:00 2001 From: Sean Larkin Date: Sun, 8 Jul 2018 08:15:02 +0100 Subject: [PATCH 15/41] chore(types): add types to EnvironmentPlugin --- lib/EnvironmentPlugin.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/EnvironmentPlugin.js b/lib/EnvironmentPlugin.js index 388ce817372..40353611130 100644 --- a/lib/EnvironmentPlugin.js +++ b/lib/EnvironmentPlugin.js @@ -5,6 +5,9 @@ "use strict"; +/** @typedef {import("./Compiler")} Compiler */ + +const WebpackError = require("./WebpackError"); const DefinePlugin = require("./DefinePlugin"); const needsEnvVarFix = @@ -25,6 +28,10 @@ class EnvironmentPlugin { } } + /** + * @param {Compiler} compiler webpack compiler instance + * @returns {void} + */ apply(compiler) { const definitions = this.keys.reduce((defs, key) => { // TODO remove once the fix has made its way into Node 8. @@ -41,7 +48,7 @@ class EnvironmentPlugin { if (value === undefined) { compiler.hooks.thisCompilation.tap("EnvironmentPlugin", compilation => { - const error = new Error( + const error = new WebpackError( `EnvironmentPlugin - ${key} environment variable is undefined.\n\n` + "You can pass an object with default values to suppress this warning.\n" + "See https://webpack.js.org/plugins/environment-plugin for example." From 378f31b4f96b9db85202167265a71d90eb85439c Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Sun, 8 Jul 2018 21:37:12 +0200 Subject: [PATCH 16/41] increase timeout for ConfigTestCases --- test/ConfigTestCases.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ConfigTestCases.test.js b/test/ConfigTestCases.test.js index 4923509f2dd..008d3b6d49d 100644 --- a/test/ConfigTestCases.test.js +++ b/test/ConfigTestCases.test.js @@ -17,7 +17,7 @@ describe("ConfigTestCases", () => { const casesPath = path.join(__dirname, "configCases"); let categories = fs.readdirSync(casesPath); - jest.setTimeout(10000); + jest.setTimeout(20000); categories = categories.map(cat => { return { From 5c8983f31fed54d943dbb071763ac2ccde17ccf1 Mon Sep 17 00:00:00 2001 From: Florent Cailhol Date: Mon, 9 Jul 2018 08:48:34 +0200 Subject: [PATCH 17/41] Deprecate Dependency.compare --- lib/Dependency.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/Dependency.js b/lib/Dependency.js index c439d639a11..4b731a7323c 100644 --- a/lib/Dependency.js +++ b/lib/Dependency.js @@ -4,6 +4,7 @@ */ "use strict"; +const util = require("util"); const compareLocations = require("./compareLocations"); const DependencyReference = require("./dependencies/DependencyReference"); @@ -78,6 +79,11 @@ class Dependency { this.module = null; } } -Dependency.compare = (a, b) => compareLocations(a.loc, b.loc); + +// TODO remove in webpack 5 +Dependency.compare = util.deprecate( + (a, b) => compareLocations(a.loc, b.loc), + "Dependency.compare is deprecated and will be removed in the next major version" +); module.exports = Dependency; From b892065db057f99c5eee57accf489de7f4264339 Mon Sep 17 00:00:00 2001 From: zroug <37004975+zroug@users.noreply.github.com> Date: Mon, 9 Jul 2018 14:39:48 +0200 Subject: [PATCH 18/41] Added support for WebAssembly modules when target is `electron-renderer` --- lib/WebpackOptionsApply.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/WebpackOptionsApply.js b/lib/WebpackOptionsApply.js index f22ca8c3074..1b9e80e3f84 100644 --- a/lib/WebpackOptionsApply.js +++ b/lib/WebpackOptionsApply.js @@ -171,9 +171,13 @@ class WebpackOptionsApply extends OptionsApply { break; case "electron-renderer": JsonpTemplatePlugin = require("./web/JsonpTemplatePlugin"); + FetchCompileWasmTemplatePlugin = require("./web/FetchCompileWasmTemplatePlugin"); NodeTargetPlugin = require("./node/NodeTargetPlugin"); ExternalsPlugin = require("./ExternalsPlugin"); new JsonpTemplatePlugin().apply(compiler); + new FetchCompileWasmTemplatePlugin({ + mangleImports: options.optimization.mangleWasmImports + }).apply(compiler); new FunctionModulePlugin().apply(compiler); new NodeTargetPlugin().apply(compiler); new ExternalsPlugin("commonjs", [ From 3fc4eb752fb70e85f125e62b211fd555501a81da Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 9 Jul 2018 14:31:29 +0200 Subject: [PATCH 19/41] add new options moduleIds and chunkIds deprecate namedModules, hashedModuleIds, namedChunks add a lot of TODOs for webpack 5 split OccurenceOrderPlugin into separate plugins for modules and chunks add NaturalChunkOrderPlugin and enable it in development --- lib/Compilation.js | 3 + lib/WebpackOptionsApply.js | 98 +++++++++++++++-- lib/WebpackOptionsDefaulter.js | 7 ++ lib/optimize/NaturalChunkOrderPlugin.js | 41 +++++++ lib/optimize/OccurrenceChunkOrderPlugin.js | 61 +++++++++++ lib/optimize/OccurrenceModuleOrderPlugin.js | 103 ++++++++++++++++++ lib/optimize/OccurrenceOrderPlugin.js | 2 + lib/webpack.js | 4 + schemas/WebpackOptions.json | 27 ++++- .../OccurrenceOrderChunkIdsPlugin.json | 10 ++ .../OccurrenceOrderModuleIdsPlugin.json | 10 ++ .../__snapshots__/StatsTestCases.test.js.snap | 52 ++++----- 12 files changed, 379 insertions(+), 39 deletions(-) create mode 100644 lib/optimize/NaturalChunkOrderPlugin.js create mode 100644 lib/optimize/OccurrenceChunkOrderPlugin.js create mode 100644 lib/optimize/OccurrenceModuleOrderPlugin.js create mode 100644 schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json create mode 100644 schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json diff --git a/lib/Compilation.js b/lib/Compilation.js index c1be909f17a..f2377a649cb 100644 --- a/lib/Compilation.js +++ b/lib/Compilation.js @@ -1292,6 +1292,9 @@ class Compilation extends Tapable { * @returns {void} */ sortModules(modules) { + // TODO webpack 5: this should only be enabled when `moduleIds: "natural"` + // TODO move it into a plugin (NaturalModuleIdsPlugin) and use this in WebpackOptionsApply + // TODO remove this method modules.sort(byIndexOrIdentifier); } diff --git a/lib/WebpackOptionsApply.js b/lib/WebpackOptionsApply.js index f22ca8c3074..4ce97c79069 100644 --- a/lib/WebpackOptionsApply.js +++ b/lib/WebpackOptionsApply.js @@ -46,7 +46,9 @@ const RemoveParentModulesPlugin = require("./optimize/RemoveParentModulesPlugin" const RemoveEmptyChunksPlugin = require("./optimize/RemoveEmptyChunksPlugin"); const MergeDuplicateChunksPlugin = require("./optimize/MergeDuplicateChunksPlugin"); const FlagIncludedChunksPlugin = require("./optimize/FlagIncludedChunksPlugin"); -const OccurrenceOrderPlugin = require("./optimize/OccurrenceOrderPlugin"); +const OccurrenceChunkOrderPlugin = require("./optimize/OccurrenceChunkOrderPlugin"); +const OccurrenceModuleOrderPlugin = require("./optimize/OccurrenceModuleOrderPlugin"); +const NaturalChunkOrderPlugin = require("./optimize/NaturalChunkOrderPlugin"); const SideEffectsFlagPlugin = require("./optimize/SideEffectsFlagPlugin"); const FlagDependencyUsagePlugin = require("./FlagDependencyUsagePlugin"); const FlagDependencyExportsPlugin = require("./FlagDependencyExportsPlugin"); @@ -325,9 +327,6 @@ class WebpackOptionsApply extends OptionsApply { if (options.optimization.flagIncludedChunks) { new FlagIncludedChunksPlugin().apply(compiler); } - if (options.optimization.occurrenceOrder) { - new OccurrenceOrderPlugin(true).apply(compiler); - } if (options.optimization.sideEffects) { new SideEffectsFlagPlugin().apply(compiler); } @@ -352,14 +351,93 @@ class WebpackOptionsApply extends OptionsApply { if (options.optimization.checkWasmTypes) { new WasmFinalizeExportsPlugin().apply(compiler); } - if (options.optimization.namedModules) { - new NamedModulesPlugin().apply(compiler); + let moduleIds = options.optimization.moduleIds; + if (moduleIds === undefined) { + // TODO webpack 5 remove all these options + if (options.optimization.occurrenceOrder) { + moduleIds = "size"; + } + if (options.optimization.namedModules) { + moduleIds = "named"; + } + if (options.optimization.hashedModuleIds) { + moduleIds = "hashed"; + } + if (moduleIds === undefined) { + moduleIds = "natural"; + } } - if (options.optimization.hashedModuleIds) { - new HashedModuleIdsPlugin().apply(compiler); + if (moduleIds) { + switch (moduleIds) { + case "natural": + // TODO webpack 5: see hint in Compilation.sortModules + break; + case "named": + new NamedModulesPlugin().apply(compiler); + break; + case "hashed": + new HashedModuleIdsPlugin().apply(compiler); + break; + case "size": + new OccurrenceModuleOrderPlugin({ + prioritiseInitial: true + }).apply(compiler); + break; + case "total-size": + new OccurrenceModuleOrderPlugin({ + prioritiseInitial: false + }).apply(compiler); + break; + default: + throw new Error( + `webpack bug: moduleIds: ${moduleIds} is not implemented` + ); + } } - if (options.optimization.namedChunks) { - new NamedChunksPlugin().apply(compiler); + let chunkIds = options.optimization.chunkIds; + if (chunkIds === undefined) { + // TODO webpack 5 remove all these options + if (options.optimization.occurrenceOrder) { + // This looks weird but it's for backward-compat + // This bug already existed before adding this feature + chunkIds = "total-size"; + } + if (options.optimization.namedChunks) { + chunkIds = "named"; + } + if (chunkIds === undefined) { + chunkIds = "natural"; + } + } + if (chunkIds) { + switch (chunkIds) { + case "natural": + new NaturalChunkOrderPlugin().apply(compiler); + break; + case "named": + // TODO webapck 5: for backward-compat this need to have OccurrenceChunkOrderPlugin too + // The NamedChunksPlugin doesn't give every chunk a name + // This should be fixed, and the OccurrenceChunkOrderPlugin should be removed here. + new OccurrenceChunkOrderPlugin({ + prioritiseInitial: false + }).apply(compiler); + new NamedChunksPlugin().apply(compiler); + break; + case "size": + new OccurrenceChunkOrderPlugin({ + prioritiseInitial: true + }).apply(compiler); + break; + case "total-size": + new OccurrenceChunkOrderPlugin({ + prioritiseInitial: false + }).apply(compiler); + break; + default: + throw new Error( + `webpack bug: chunkIds: ${chunkIds} is not implemented` + ); + } } if (options.optimization.nodeEnv) { new DefinePlugin({ diff --git a/lib/WebpackOptionsDefaulter.js b/lib/WebpackOptionsDefaulter.js index 3f9da0b72d2..2416101f3b2 100644 --- a/lib/WebpackOptionsDefaulter.js +++ b/lib/WebpackOptionsDefaulter.js @@ -201,6 +201,9 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { this.set("optimization.flagIncludedChunks", "make", options => isProductionLikeMode(options) ); + // TODO webpack 5 add `moduleIds: "named"` default for development + // TODO webpack 5 add `moduleIds: "size"` default for production + // TODO webpack 5 remove optimization.occurrenceOrder this.set("optimization.occurrenceOrder", "make", options => isProductionLikeMode(options) ); @@ -261,12 +264,16 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { isProductionLikeMode(options) ); this.set("optimization.mangleWasmImports", false); + // TODO webpack 5 remove optimization.namedModules this.set( "optimization.namedModules", "make", options => options.mode === "development" ); this.set("optimization.hashedModuleIds", false); + // TODO webpack 5 add `chunkIds: "named"` default for development + // TODO webpack 5 add `chunkIds: "size"` default for production + // TODO webpack 5 remove optimization.namedChunks this.set( "optimization.namedChunks", "make", diff --git a/lib/optimize/NaturalChunkOrderPlugin.js b/lib/optimize/NaturalChunkOrderPlugin.js new file mode 100644 index 00000000000..00f8010d8b8 --- /dev/null +++ b/lib/optimize/NaturalChunkOrderPlugin.js @@ -0,0 +1,41 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +/** @typedef {import("../Compiler")} Compiler */ + +class NaturalChunkOrderPlugin { + /** + * @param {Compiler} compiler webpack compiler + * @returns {void} + */ + apply(compiler) { + compiler.hooks.compilation.tap("NaturalChunkOrderPlugin", compilation => { + compilation.hooks.optimizeChunkOrder.tap( + "NaturalChunkOrderPlugin", + chunks => { + chunks.sort((chunkA, chunkB) => { + const a = chunkA.modulesIterable[Symbol.iterator](); + const b = chunkB.modulesIterable[Symbol.iterator](); + // eslint-disable-next-line no-constant-condition + while (true) { + const aItem = a.next(); + const bItem = b.next(); + if (aItem.done && bItem.done) return 0; + if (aItem.done) return -1; + if (bItem.done) return 1; + const aModuleId = aItem.value.id; + const bModuleId = bItem.value.id; + if (aModuleId < bModuleId) return -1; + if (aModuleId > bModuleId) return 1; + } + }); + } + ); + }); + } +} + +module.exports = NaturalChunkOrderPlugin; diff --git a/lib/optimize/OccurrenceChunkOrderPlugin.js b/lib/optimize/OccurrenceChunkOrderPlugin.js new file mode 100644 index 00000000000..c7251c38d78 --- /dev/null +++ b/lib/optimize/OccurrenceChunkOrderPlugin.js @@ -0,0 +1,61 @@ +/* + 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/optimize/OccurrenceOrderChunkIdsPlugin.json"); + +class OccurrenceOrderChunkIdsPlugin { + constructor(options = {}) { + validateOptions(schema, options, "Occurrence Order Chunk Ids Plugin"); + this.options = options; + } + + apply(compiler) { + const prioritiseInitial = this.options.prioritiseInitial; + compiler.hooks.compilation.tap( + "OccurrenceOrderChunkIdsPlugin", + compilation => { + compilation.hooks.optimizeChunkOrder.tap( + "OccurrenceOrderChunkIdsPlugin", + chunks => { + const occursInInitialChunksMap = new Map(); + const originalOrder = new Map(); + + let i = 0; + for (const c of chunks) { + let occurs = 0; + for (const chunkGroup of c.groupsIterable) { + for (const parent of chunkGroup.parentsIterable) { + if (parent.isInitial()) occurs++; + } + } + occursInInitialChunksMap.set(c, occurs); + originalOrder.set(c, i++); + } + + chunks.sort((a, b) => { + if (prioritiseInitial) { + const aEntryOccurs = occursInInitialChunksMap.get(a); + const bEntryOccurs = occursInInitialChunksMap.get(b); + if (aEntryOccurs > bEntryOccurs) return -1; + if (aEntryOccurs < bEntryOccurs) return 1; + } + const aOccurs = a.getNumberOfGroups(); + const bOccurs = b.getNumberOfGroups(); + if (aOccurs > bOccurs) return -1; + if (aOccurs < bOccurs) return 1; + const orgA = originalOrder.get(a); + const orgB = originalOrder.get(b); + return orgB - orgA; + }); + } + ); + } + ); + } +} + +module.exports = OccurrenceOrderChunkIdsPlugin; diff --git a/lib/optimize/OccurrenceModuleOrderPlugin.js b/lib/optimize/OccurrenceModuleOrderPlugin.js new file mode 100644 index 00000000000..8e6509dadf7 --- /dev/null +++ b/lib/optimize/OccurrenceModuleOrderPlugin.js @@ -0,0 +1,103 @@ +/* + 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/optimize/OccurrenceOrderModuleIdsPlugin.json"); + +class OccurrenceOrderModuleIdsPlugin { + constructor(options = {}) { + validateOptions(schema, options, "Occurrence Order Module Ids Plugin"); + this.options = options; + } + + apply(compiler) { + const prioritiseInitial = this.options.prioritiseInitial; + compiler.hooks.compilation.tap( + "OccurrenceOrderModuleIdsPlugin", + compilation => { + compilation.hooks.optimizeModuleOrder.tap( + "OccurrenceOrderModuleIdsPlugin", + modules => { + const occursInInitialChunksMap = new Map(); + const occursInAllChunksMap = new Map(); + + const initialChunkChunkMap = new Map(); + const entryCountMap = new Map(); + for (const m of modules) { + let initial = 0; + let entry = 0; + for (const c of m.chunksIterable) { + if (c.canBeInitial()) initial++; + if (c.entryModule === m) entry++; + } + initialChunkChunkMap.set(m, initial); + entryCountMap.set(m, entry); + } + + const countOccursInEntry = (sum, r) => { + if (!r.module) { + return sum; + } + return sum + initialChunkChunkMap.get(r.module); + }; + const countOccurs = (sum, r) => { + if (!r.module) { + return sum; + } + let factor = 1; + if (typeof r.dependency.getNumberOfIdOccurrences === "function") { + factor = r.dependency.getNumberOfIdOccurrences(); + } + if (factor === 0) { + return sum; + } + return sum + factor * r.module.getNumberOfChunks(); + }; + + if (prioritiseInitial) { + for (const m of modules) { + const result = + m.reasons.reduce(countOccursInEntry, 0) + + initialChunkChunkMap.get(m) + + entryCountMap.get(m); + occursInInitialChunksMap.set(m, result); + } + } + + const originalOrder = new Map(); + let i = 0; + for (const m of modules) { + const result = + m.reasons.reduce(countOccurs, 0) + + m.getNumberOfChunks() + + entryCountMap.get(m); + occursInAllChunksMap.set(m, result); + originalOrder.set(m, i++); + } + + modules.sort((a, b) => { + if (prioritiseInitial) { + const aEntryOccurs = occursInInitialChunksMap.get(a); + const bEntryOccurs = occursInInitialChunksMap.get(b); + if (aEntryOccurs > bEntryOccurs) return -1; + if (aEntryOccurs < bEntryOccurs) return 1; + } + const aOccurs = occursInAllChunksMap.get(a); + const bOccurs = occursInAllChunksMap.get(b); + if (aOccurs > bOccurs) return -1; + if (aOccurs < bOccurs) return 1; + const orgA = originalOrder.get(a); + const orgB = originalOrder.get(b); + return orgB - orgA; + }); + } + ); + } + ); + } +} + +module.exports = OccurrenceOrderModuleIdsPlugin; diff --git a/lib/optimize/OccurrenceOrderPlugin.js b/lib/optimize/OccurrenceOrderPlugin.js index 8e23f951473..1590be90a4a 100644 --- a/lib/optimize/OccurrenceOrderPlugin.js +++ b/lib/optimize/OccurrenceOrderPlugin.js @@ -4,6 +4,8 @@ */ "use strict"; +// TODO webpack 5 remove this plugin +// It has been splitted into separate plugins for modules and chunks class OccurrenceOrderPlugin { constructor(preferEntry) { if (preferEntry !== undefined && typeof preferEntry !== "boolean") { diff --git a/lib/webpack.js b/lib/webpack.js index f5a8af68f95..ff9fe62c1ab 100644 --- a/lib/webpack.js +++ b/lib/webpack.js @@ -137,6 +137,10 @@ exportPlugins((exports.optimize = {}), { ModuleConcatenationPlugin: () => require("./optimize/ModuleConcatenationPlugin"), OccurrenceOrderPlugin: () => require("./optimize/OccurrenceOrderPlugin"), + OccurrenceModuleOrderPlugin: () => + require("./optimize/OccurrenceModuleOrderPlugin"), + OccurrenceChunkOrderPlugin: () => + require("./optimize/OccurrenceChunkOrderPlugin"), RuntimeChunkPlugin: () => require("./optimize/RuntimeChunkPlugin"), SideEffectsFlagPlugin: () => require("./optimize/SideEffectsFlagPlugin"), SplitChunksPlugin: () => require("./optimize/SplitChunksPlugin") diff --git a/schemas/WebpackOptions.json b/schemas/WebpackOptions.json index 7581fe8dd22..40ceb173c4d 100644 --- a/schemas/WebpackOptions.json +++ b/schemas/WebpackOptions.json @@ -1586,16 +1586,37 @@ "description": "Reduce size of WASM by changing imports to shorter strings.", "type": "boolean" }, + "moduleIds": { + "description": "Define the algorithm to choose module ids (natural: numeric ids in order for usage, named: readable ids for better debugging, hashed: short hashes as ids for better long term caching, size: numeric ids focused on minimal initial download size, total-size: numeric ids focused on minimal total download size, false: no algorithm used, as custom one can be provided via plugin)", + "enum": [ + "natural", + "named", + "hashed", + "size", + "total-size", + false + ] + }, + "chunkIds": { + "description": "Define the algorithm to choose chunk ids (named: readable ids for better debugging, size: numeric ids focused on minimal initial download size, total-size: numeric ids focused on minimal total download size, false: no algorithm used, as custom one can be provided via plugin)", + "enum": [ + "natural", + "named", + "size", + "total-size", + false + ] + }, "namedModules": { - "description": "Use readable module identifiers for better debugging", + "description": "Use readable module identifiers for better debugging (deprecated, used moduleIds: named instead)", "type": "boolean" }, "hashedModuleIds": { - "description": "Use hashed module id instead module identifiers for better long term caching", + "description": "Use hashed module id instead module identifiers for better long term caching (deprecated, used moduleIds: hashed instead)", "type": "boolean" }, "namedChunks": { - "description": "Use readable chunk identifiers for better debugging", + "description": "Use readable chunk identifiers for better debugging (deprecated, used chunkIds: named instead)", "type": "boolean" }, "portableRecords": { diff --git a/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json b/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json new file mode 100644 index 00000000000..f1e85ac5d6a --- /dev/null +++ b/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json @@ -0,0 +1,10 @@ +{ + "additionalProperties": false, + "type": "object", + "properties": { + "prioritiseInitial": { + "description": "Prioritise initial size over total size", + "type": "boolean" + } + } +} diff --git a/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json b/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json new file mode 100644 index 00000000000..f1e85ac5d6a --- /dev/null +++ b/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json @@ -0,0 +1,10 @@ +{ + "additionalProperties": false, + "type": "object", + "properties": { + "prioritiseInitial": { + "description": "Prioritise initial size over total size", + "type": "boolean" + } + } +} diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index babc4a7d2c5..4951bd664da 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -467,28 +467,28 @@ Child all: `; exports[`StatsTestCases should print correct stats for chunk-module-id-range 1`] = ` -"Hash: 7d8eb8b4418c6ae6a262 +"Hash: b385901db3d63ff731a3 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names -main2.js 4.85 KiB 0 [emitted] main2 -main1.js 4.86 KiB 1 [emitted] main1 +main1.js 4.86 KiB 0 [emitted] main1 +main2.js 4.85 KiB 1 [emitted] main2 Entrypoint main1 = main1.js Entrypoint main2 = main2.js -chunk {0} main2.js (main2) 136 bytes [entry] [rendered] - > ./main2 main2 - [0] ./e.js 20 bytes {0} [built] - [1] ./f.js 20 bytes {0} [built] - [2] ./main2.js 56 bytes {0} [built] - [100] ./d.js 20 bytes {0} {1} [built] - [101] ./a.js 20 bytes {0} {1} [built] -chunk {1} main1.js (main1) 136 bytes [entry] [rendered] +chunk {0} main1.js (main1) 136 bytes [entry] [rendered] > ./main1 main1 - [3] ./b.js 20 bytes {1} [built] - [4] ./main1.js 56 bytes {1} [built] + [3] ./b.js 20 bytes {0} [built] + [4] ./main1.js 56 bytes {0} [built] [100] ./d.js 20 bytes {0} {1} [built] [101] ./a.js 20 bytes {0} {1} [built] - [102] ./c.js 20 bytes {1} [built]" + [102] ./c.js 20 bytes {0} [built] +chunk {1} main2.js (main2) 136 bytes [entry] [rendered] + > ./main2 main2 + [0] ./e.js 20 bytes {1} [built] + [1] ./f.js 20 bytes {1} [built] + [2] ./main2.js 56 bytes {1} [built] + [100] ./d.js 20 bytes {0} {1} [built] + [101] ./a.js 20 bytes {0} {1} [built]" `; exports[`StatsTestCases should print correct stats for chunks 1`] = ` @@ -530,14 +530,14 @@ chunk {3} 3.bundle.js 44 bytes <{1}> [rendered] `; exports[`StatsTestCases should print correct stats for chunks-development 1`] = ` -"Hash: 491964abb8a9925c2f65 +"Hash: 83bf92a94bc3834801e8 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names -0.bundle.js 433 bytes 0 [emitted] -1.bundle.js 297 bytes 1 [emitted] -2.bundle.js 588 bytes 2 [emitted] +0.bundle.js 297 bytes 0 [emitted] +1.bundle.js 433 bytes 1 [emitted] bundle.js 8.67 KiB main [emitted] main +2.bundle.js 588 bytes 2 [emitted] Entrypoint main = bundle.js chunk {main} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] > ./index main @@ -548,17 +548,17 @@ chunk {main} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] [./index.js] 51 bytes {main} [built] single entry ./index main factory:Xms building:Xms = Xms -chunk {0} 0.bundle.js 54 bytes <{main}> >{2}< [rendered] - > ./c [./index.js] ./index.js 3:0-16 - [./c.js] 54 bytes {0} [built] - amd require ./c [./index.js] 3:0-16 - [./index.js] Xms -> factory:Xms building:Xms = Xms -chunk {1} 1.bundle.js 22 bytes <{main}> [rendered] +chunk {0} 0.bundle.js 22 bytes <{main}> [rendered] > ./b [./index.js] ./index.js 2:0-16 - [./b.js] 22 bytes {1} [built] + [./b.js] 22 bytes {0} [built] amd require ./b [./index.js] 2:0-16 [./index.js] Xms -> factory:Xms building:Xms = Xms -chunk {2} 2.bundle.js 60 bytes <{0}> [rendered] +chunk {1} 1.bundle.js 54 bytes <{main}> >{2}< [rendered] + > ./c [./index.js] ./index.js 3:0-16 + [./c.js] 54 bytes {1} [built] + amd require ./c [./index.js] 3:0-16 + [./index.js] Xms -> factory:Xms building:Xms = Xms +chunk {2} 2.bundle.js 60 bytes <{1}> [rendered] > [./c.js] ./c.js 1:0-52 [./d.js] 22 bytes {2} [built] require.ensure item ./d [./c.js] 1:0-52 From 559cf94edbd5172a96062c538d62190ad176b0bc Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 9 Jul 2018 14:48:28 +0200 Subject: [PATCH 20/41] Simplify imports --- lib/AutomaticPrefetchPlugin.js | 2 +- lib/Chunk.js | 4 ++-- lib/CommentCompilationWarning.js | 4 ++-- lib/CompatibilityPlugin.js | 2 +- lib/Entrypoint.js | 2 +- lib/HotModuleReplacementPlugin.js | 2 +- lib/IgnorePlugin.js | 2 +- lib/UseStrictPlugin.js | 2 +- lib/dependencies/SystemPlugin.js | 2 +- lib/node/NodeMainTemplatePlugin.js | 4 ++-- lib/node/NodeSourcePlugin.js | 2 +- lib/wasm/WasmFinalizeExportsPlugin.js | 2 +- lib/web/JsonpMainTemplatePlugin.js | 2 +- lib/webworker/WebWorkerMainTemplatePlugin.js | 2 +- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/AutomaticPrefetchPlugin.js b/lib/AutomaticPrefetchPlugin.js index ccb7d856b4a..2d0db16ecdb 100644 --- a/lib/AutomaticPrefetchPlugin.js +++ b/lib/AutomaticPrefetchPlugin.js @@ -8,7 +8,7 @@ const asyncLib = require("neo-async"); const PrefetchDependency = require("./dependencies/PrefetchDependency"); const NormalModule = require("./NormalModule"); -/** @typedef {import("./Compiler.js")} Compiler */ +/** @typedef {import("./Compiler")} Compiler */ class AutomaticPrefetchPlugin { /** diff --git a/lib/Chunk.js b/lib/Chunk.js index 7d9ad3a05c5..95f9f955550 100644 --- a/lib/Chunk.js +++ b/lib/Chunk.js @@ -13,9 +13,9 @@ const ERR_CHUNK_ENTRY = "Chunk.entry was removed. Use hasRuntime()"; const ERR_CHUNK_INITIAL = "Chunk.initial was removed. Use canBeInitial/isOnlyInitial()"; -/** @typedef {import("./Module.js")} Module */ +/** @typedef {import("./Module")} Module */ /** @typedef {import("./ChunkGroup")} ChunkGroup */ -/** @typedef {import("./ModuleReason.js")} ModuleReason */ +/** @typedef {import("./ModuleReason")} ModuleReason */ /** @typedef {import("webpack-sources").Source} Source */ /** @typedef {import("./util/createHash").Hash} Hash */ diff --git a/lib/CommentCompilationWarning.js b/lib/CommentCompilationWarning.js index 1f8e233f3aa..79f0a2af5d5 100644 --- a/lib/CommentCompilationWarning.js +++ b/lib/CommentCompilationWarning.js @@ -6,9 +6,9 @@ const WebpackError = require("./WebpackError"); -/** @typedef {import("./Module.js")} Module */ +/** @typedef {import("./Module")} Module */ -/** @typedef {import("./Dependency.js").DependencyLocation} DependencyLocation */ +/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */ class CommentCompilationWarning extends WebpackError { /** diff --git a/lib/CompatibilityPlugin.js b/lib/CompatibilityPlugin.js index 5d2680245bb..7edea8336b8 100644 --- a/lib/CompatibilityPlugin.js +++ b/lib/CompatibilityPlugin.js @@ -8,7 +8,7 @@ const ConstDependency = require("./dependencies/ConstDependency"); const NullFactory = require("./NullFactory"); -/** @typedef {import("./Compiler.js")} Compiler */ +/** @typedef {import("./Compiler")} Compiler */ class CompatibilityPlugin { /** diff --git a/lib/Entrypoint.js b/lib/Entrypoint.js index 892855e1607..c67ff44ed7c 100644 --- a/lib/Entrypoint.js +++ b/lib/Entrypoint.js @@ -6,7 +6,7 @@ const ChunkGroup = require("./ChunkGroup"); -/** @typedef {import("./Chunk.js")} Chunk */ +/** @typedef {import("./Chunk")} Chunk */ /** * Entrypoint serves as an encapsulation primitive for chunks that are diff --git a/lib/HotModuleReplacementPlugin.js b/lib/HotModuleReplacementPlugin.js index fa893aa3d69..a6ca6986e05 100644 --- a/lib/HotModuleReplacementPlugin.js +++ b/lib/HotModuleReplacementPlugin.js @@ -407,5 +407,5 @@ module.exports = class HotModuleReplacementPlugin { }; const hotInitCode = Template.getFunctionContent( - require("./HotModuleReplacement.runtime.js") + require("./HotModuleReplacement.runtime") ); diff --git a/lib/IgnorePlugin.js b/lib/IgnorePlugin.js index fc280e88018..b2c84b12204 100644 --- a/lib/IgnorePlugin.js +++ b/lib/IgnorePlugin.js @@ -4,7 +4,7 @@ */ "use strict"; -/** @typedef {import("./Compiler.js")} Compiler */ +/** @typedef {import("./Compiler")} Compiler */ class IgnorePlugin { /** diff --git a/lib/UseStrictPlugin.js b/lib/UseStrictPlugin.js index 175c6028350..425be2e31c7 100644 --- a/lib/UseStrictPlugin.js +++ b/lib/UseStrictPlugin.js @@ -6,7 +6,7 @@ const ConstDependency = require("./dependencies/ConstDependency"); -/** @typedef {import("./Compiler.js")} Compiler */ +/** @typedef {import("./Compiler")} Compiler */ class UseStrictPlugin { /** diff --git a/lib/dependencies/SystemPlugin.js b/lib/dependencies/SystemPlugin.js index 69f3e8dc017..c85778861b8 100644 --- a/lib/dependencies/SystemPlugin.js +++ b/lib/dependencies/SystemPlugin.js @@ -72,7 +72,7 @@ class SystemPlugin { parser.hooks.expression.for("System").tap("SystemPlugin", () => { const systemPolyfillRequire = ParserHelpers.requireFileAsExpression( parser.state.module.context, - require.resolve("../../buildin/system.js") + require.resolve("../../buildin/system") ); return ParserHelpers.addParsedVariableToModule( parser, diff --git a/lib/node/NodeMainTemplatePlugin.js b/lib/node/NodeMainTemplatePlugin.js index c32ae38da56..a7b88867254 100644 --- a/lib/node/NodeMainTemplatePlugin.js +++ b/lib/node/NodeMainTemplatePlugin.js @@ -305,8 +305,8 @@ module.exports = class NodeMainTemplatePlugin { ); return Template.getFunctionContent( asyncChunkLoading - ? require("./NodeMainTemplateAsync.runtime.js") - : require("./NodeMainTemplate.runtime.js") + ? require("./NodeMainTemplateAsync.runtime") + : require("./NodeMainTemplate.runtime") ) .replace(/\$require\$/g, mainTemplate.requireFn) .replace(/\$hotMainFilename\$/g, currentHotUpdateMainFilename) diff --git a/lib/node/NodeSourcePlugin.js b/lib/node/NodeSourcePlugin.js index 31825bb5c87..d5505f6f5be 100644 --- a/lib/node/NodeSourcePlugin.js +++ b/lib/node/NodeSourcePlugin.js @@ -71,7 +71,7 @@ module.exports = class NodeSourcePlugin { .tap("NodeSourcePlugin", () => { const retrieveGlobalModule = ParserHelpers.requireFileAsExpression( parser.state.module.context, - require.resolve("../../buildin/global.js") + require.resolve("../../buildin/global") ); return ParserHelpers.addParsedVariableToModule( parser, diff --git a/lib/wasm/WasmFinalizeExportsPlugin.js b/lib/wasm/WasmFinalizeExportsPlugin.js index 09584222bb3..d665a5b81c2 100644 --- a/lib/wasm/WasmFinalizeExportsPlugin.js +++ b/lib/wasm/WasmFinalizeExportsPlugin.js @@ -4,7 +4,7 @@ */ "use strict"; -const UnsupportedWebAssemblyFeatureError = require("../wasm/UnsupportedWebAssemblyFeatureError"); +const UnsupportedWebAssemblyFeatureError = require("./UnsupportedWebAssemblyFeatureError"); class WasmFinalizeExportsPlugin { apply(compiler) { diff --git a/lib/web/JsonpMainTemplatePlugin.js b/lib/web/JsonpMainTemplatePlugin.js index 018d2147b09..45a6eb42569 100644 --- a/lib/web/JsonpMainTemplatePlugin.js +++ b/lib/web/JsonpMainTemplatePlugin.js @@ -556,7 +556,7 @@ class JsonpMainTemplatePlugin { } ); const runtimeSource = Template.getFunctionContent( - require("./JsonpMainTemplate.runtime.js") + require("./JsonpMainTemplate.runtime") ) .replace(/\/\/\$semicolon/g, ";") .replace(/\$require\$/g, mainTemplate.requireFn) diff --git a/lib/webworker/WebWorkerMainTemplatePlugin.js b/lib/webworker/WebWorkerMainTemplatePlugin.js index 02d3d5d4265..a668f5d433f 100644 --- a/lib/webworker/WebWorkerMainTemplatePlugin.js +++ b/lib/webworker/WebWorkerMainTemplatePlugin.js @@ -172,7 +172,7 @@ class WebWorkerMainTemplatePlugin { )}];\n` + `${globalObject}[${JSON.stringify(hotUpdateFunction)}] = ` + Template.getFunctionContent( - require("./WebWorkerMainTemplate.runtime.js") + require("./WebWorkerMainTemplate.runtime") ) .replace(/\/\/\$semicolon/g, ";") .replace(/\$require\$/g, mainTemplate.requireFn) From c12ab8d5e4dc8e1abb4b2b0b689288e6c445b6a2 Mon Sep 17 00:00:00 2001 From: Raanan Weber Date: Mon, 9 Jul 2018 17:28:32 +0200 Subject: [PATCH 21/41] Recursive getDevtoolNamespace Supporting the case where options.output.library.root is an Array: ```javascript output: { library: { root: ["MyLibrary", "Sub"], amd: "my-library", commonjs: "my-common-library" }, libraryTarget: "umd" } ``` --- lib/WebpackOptionsDefaulter.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/WebpackOptionsDefaulter.js b/lib/WebpackOptionsDefaulter.js index 3f9da0b72d2..95cef11179d 100644 --- a/lib/WebpackOptionsDefaulter.js +++ b/lib/WebpackOptionsDefaulter.js @@ -17,6 +17,16 @@ const isWebLikeTarget = options => { return options.target === "web" || options.target === "webworker"; }; +const getDevtoolNamespace = library => { + // if options.output.library is a string + if (Array.isArray(library)) { + return library.join("."); + } else if (typeof library === "object") { + return getDevtoolNamespace(library.root); + } + return library || ""; +} + class WebpackOptionsDefaulter extends OptionsDefaulter { constructor() { super(); @@ -60,8 +70,8 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { resolve: { mainFields: options.target === "web" || - options.target === "webworker" || - options.target === "electron-renderer" + options.target === "webworker" || + options.target === "electron-renderer" ? ["browser", "main"] : ["main"] } @@ -136,12 +146,7 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { } }); this.set("output.devtoolNamespace", "make", options => { - if (Array.isArray(options.output.library)) { - return options.output.library.join("."); - } else if (typeof options.output.library === "object") { - return options.output.library.root || ""; - } - return options.output.library || ""; + return getDevtoolNamespace(options.output.library); }); this.set("output.libraryTarget", "var"); this.set("output.path", path.join(process.cwd(), "dist")); From 47aa3d0ffee3f48d070701c05f5b620986718682 Mon Sep 17 00:00:00 2001 From: Raanan Weber Date: Mon, 9 Jul 2018 17:32:57 +0200 Subject: [PATCH 22/41] adding tests --- .../array-as-output-library-in-object-output/index.js | 1 + .../webpack.config.js | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 test/configCases/source-map/array-as-output-library-in-object-output/index.js create mode 100644 test/configCases/source-map/array-as-output-library-in-object-output/webpack.config.js diff --git a/test/configCases/source-map/array-as-output-library-in-object-output/index.js b/test/configCases/source-map/array-as-output-library-in-object-output/index.js new file mode 100644 index 00000000000..e0b8201c32b --- /dev/null +++ b/test/configCases/source-map/array-as-output-library-in-object-output/index.js @@ -0,0 +1 @@ +it("should compile successfully when output.library.root is an array of strings", function () { }); diff --git a/test/configCases/source-map/array-as-output-library-in-object-output/webpack.config.js b/test/configCases/source-map/array-as-output-library-in-object-output/webpack.config.js new file mode 100644 index 00000000000..d9c8900e51f --- /dev/null +++ b/test/configCases/source-map/array-as-output-library-in-object-output/webpack.config.js @@ -0,0 +1,11 @@ +module.exports = { + devtool: "source-map", + output: { + library: { + root: ["Foo", "[name]"], + amd: "[name]", + commonjs: "[name]" + }, + libraryTarget: "umd" + } +}; From fa7cf3b218c4651daf8a4d2cd478b6fa1e90d06c Mon Sep 17 00:00:00 2001 From: Raanan Weber Date: Mon, 9 Jul 2018 17:50:13 +0200 Subject: [PATCH 23/41] formatting --- lib/WebpackOptionsDefaulter.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/WebpackOptionsDefaulter.js b/lib/WebpackOptionsDefaulter.js index 95cef11179d..6cae0efa5d3 100644 --- a/lib/WebpackOptionsDefaulter.js +++ b/lib/WebpackOptionsDefaulter.js @@ -25,7 +25,7 @@ const getDevtoolNamespace = library => { return getDevtoolNamespace(library.root); } return library || ""; -} +}; class WebpackOptionsDefaulter extends OptionsDefaulter { constructor() { @@ -70,8 +70,8 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { resolve: { mainFields: options.target === "web" || - options.target === "webworker" || - options.target === "electron-renderer" + options.target === "webworker" || + options.target === "electron-renderer" ? ["browser", "main"] : ["main"] } From 3e03edc2cfa481fda69b60fcd1bf43028a9f17a0 Mon Sep 17 00:00:00 2001 From: ferhat elmas Date: Mon, 9 Jul 2018 22:20:45 +0200 Subject: [PATCH 24/41] fix(hot): log messages group arguments of operator or (||) otherwise, nonempty string is always true --- hot/dev-server.js | 4 ++-- hot/only-dev-server.js | 4 ++-- hot/poll.js | 7 +++++-- hot/signal.js | 4 ++-- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/hot/dev-server.js b/hot/dev-server.js index a4cb0f50d24..682a47f8423 100644 --- a/hot/dev-server.js +++ b/hot/dev-server.js @@ -40,10 +40,10 @@ if (module.hot) { "warning", "[HMR] Cannot apply update. Need to do a full reload!" ); - log("warning", "[HMR] " + err.stack || err.message); + log("warning", "[HMR] " + (err.stack || err.message)); window.location.reload(); } else { - log("warning", "[HMR] Update failed: " + err.stack || err.message); + log("warning", "[HMR] Update failed: " + (err.stack || err.message)); } }); }; diff --git a/hot/only-dev-server.js b/hot/only-dev-server.js index cf452dc6e33..043f2430b54 100644 --- a/hot/only-dev-server.js +++ b/hot/only-dev-server.js @@ -72,11 +72,11 @@ if (module.hot) { "warning", "[HMR] Cannot check for update. Need to do a full reload!" ); - log("warning", "[HMR] " + err.stack || err.message); + log("warning", "[HMR] " + (err.stack || err.message)); } else { log( "warning", - "[HMR] Update check failed: " + err.stack || err.message + "[HMR] Update check failed: " + (err.stack || err.message) ); } }); diff --git a/hot/poll.js b/hot/poll.js index f615accef7a..8193db01f5c 100644 --- a/hot/poll.js +++ b/hot/poll.js @@ -23,10 +23,13 @@ if (module.hot) { var status = module.hot.status(); if (["abort", "fail"].indexOf(status) >= 0) { log("warning", "[HMR] Cannot apply update."); - log("warning", "[HMR] " + err.stack || err.message); + log("warning", "[HMR] " + (err.stack || err.message)); log("warning", "[HMR] You need to restart the application!"); } else { - log("warning", "[HMR] Update failed: " + err.stack || err.message); + log( + "warning", + "[HMR] Update failed: " + (err.stack || err.message) + ); } }); } diff --git a/hot/signal.js b/hot/signal.js index d3ce50e8cc5..24c4f5cb337 100644 --- a/hot/signal.js +++ b/hot/signal.js @@ -37,10 +37,10 @@ if (module.hot) { var status = module.hot.status(); if (["abort", "fail"].indexOf(status) >= 0) { log("warning", "[HMR] Cannot apply update."); - log("warning", "[HMR] " + err.stack || err.message); + log("warning", "[HMR] " + (err.stack || err.message)); log("warning", "[HMR] You need to restart the application!"); } else { - log("warning", "[HMR] Update failed: " + err.stack || err.message); + log("warning", "[HMR] Update failed: " + (err.stack || err.message)); } }); }; From 271b77d45f9c9d107f82b79df25a4fb673ddc411 Mon Sep 17 00:00:00 2001 From: ferhat elmas Date: Mon, 9 Jul 2018 22:48:12 +0200 Subject: [PATCH 25/41] all: typo fixes --- _SETUP.md | 2 +- examples/many-pages/README.md | 4 ++-- examples/many-pages/template.md | 2 +- examples/many-pages/webpack.config.js | 2 +- lib/Chunk.js | 2 +- lib/ChunkGroup.js | 2 +- lib/Compilation.js | 4 ++-- lib/Generator.js | 2 +- lib/optimize/SplitChunksPlugin.js | 2 +- lib/util/cachedMerge.js | 2 +- lib/util/deterministicGrouping.js | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/_SETUP.md b/_SETUP.md index ebd501013be..ce57ab77540 100644 --- a/_SETUP.md +++ b/_SETUP.md @@ -27,7 +27,7 @@ yarn link webpack yarn test ``` -### To run only intergration tests use +### To run only integration tests use ```bash yarn test:integration diff --git a/examples/many-pages/README.md b/examples/many-pages/README.md index 00d976fbc20..84ef71ada33 100644 --- a/examples/many-pages/README.md +++ b/examples/many-pages/README.md @@ -1,6 +1,6 @@ # Info -This example illustrates webpack's algorthim for automatic deduplication using `optimization.splitChunks`. +This example illustrates webpack's algorithm for automatic deduplication using `optimization.splitChunks`. This example application contains 7 pages, each of them importing 1-3 modules from the `node_modules` folder (vendor libs) and 0-3 modules from the `stuff` folder (application modules). In reallity an application is probably more complex, but the same mechanisms apply. @@ -41,7 +41,7 @@ module.exports = { chunks: "all", maxInitialRequests: 20, // for HTTP2 maxAsyncRequests: 20, // for HTTP2 - minSize: 40 // for example only: choosen to match 2 modules + minSize: 40 // for example only: chosen to match 2 modules // omit minSize in real use case to use the default of 30kb } } diff --git a/examples/many-pages/template.md b/examples/many-pages/template.md index 7bbc7b0dd44..b4633cf6dfb 100644 --- a/examples/many-pages/template.md +++ b/examples/many-pages/template.md @@ -1,6 +1,6 @@ # Info -This example illustrates webpack's algorthim for automatic deduplication using `optimization.splitChunks`. +This example illustrates webpack's algorithm for automatic deduplication using `optimization.splitChunks`. This example application contains 7 pages, each of them importing 1-3 modules from the `node_modules` folder (vendor libs) and 0-3 modules from the `stuff` folder (application modules). In reallity an application is probably more complex, but the same mechanisms apply. diff --git a/examples/many-pages/webpack.config.js b/examples/many-pages/webpack.config.js index f47598f6309..b5ce749f624 100644 --- a/examples/many-pages/webpack.config.js +++ b/examples/many-pages/webpack.config.js @@ -14,7 +14,7 @@ module.exports = { chunks: "all", maxInitialRequests: 20, // for HTTP2 maxAsyncRequests: 20, // for HTTP2 - minSize: 40 // for example only: choosen to match 2 modules + minSize: 40 // for example only: chosen to match 2 modules // omit minSize in real use case to use the default of 30kb } } diff --git a/lib/Chunk.js b/lib/Chunk.js index 7d9ad3a05c5..e7b27f52772 100644 --- a/lib/Chunk.js +++ b/lib/Chunk.js @@ -628,7 +628,7 @@ class Chunk { list.sort((a, b) => { const cmp = b.order - a.order; if (cmp !== 0) return cmp; - // TOOD webpack 5 remove this check of compareTo + // TODO webpack 5 remove this check of compareTo if (a.group.compareTo) { return a.group.compareTo(b.group); } diff --git a/lib/ChunkGroup.js b/lib/ChunkGroup.js index 19e8f3c67ee..d2b49501df8 100644 --- a/lib/ChunkGroup.js +++ b/lib/ChunkGroup.js @@ -442,7 +442,7 @@ class ChunkGroup { list.sort((a, b) => { const cmp = b.order - a.order; if (cmp !== 0) return cmp; - // TOOD webpack 5 remove this check of compareTo + // TODO webpack 5 remove this check of compareTo if (a.group.compareTo) { return a.group.compareTo(b.group); } diff --git a/lib/Compilation.js b/lib/Compilation.js index c1be909f17a..8c2d434373f 100644 --- a/lib/Compilation.js +++ b/lib/Compilation.js @@ -1453,7 +1453,7 @@ class Compilation extends Tapable { * @returns {DependencyReference} a reference for the dependency */ getDependencyReference(module, dependency) { - // TODO remove dep.getReference existance check in webpack 5 + // TODO remove dep.getReference existence check in webpack 5 if (typeof dependency.getReference !== "function") return null; const ref = dependency.getReference(); if (!ref) return null; @@ -2113,7 +2113,7 @@ class Compilation extends Tapable { /** * Used to sort errors and warnings in compilation. this.warnings, and - * this.errors contribute to the compilation hash and therefore shoudl be + * this.errors contribute to the compilation hash and therefore should be * updated whenever other references (having a chunk id) are sorted. This preserves the hash * integrity * diff --git a/lib/Generator.js b/lib/Generator.js index 441f22872de..5c93506d426 100644 --- a/lib/Generator.js +++ b/lib/Generator.js @@ -25,7 +25,7 @@ class Generator { * @returns {Source} generated code */ generate(module, dependencyTemplates, runtimeTemplate, type) { - throw new Error("Generator.generate: must be overriden"); + throw new Error("Generator.generate: must be overridden"); } } diff --git a/lib/optimize/SplitChunksPlugin.js b/lib/optimize/SplitChunksPlugin.js index 54081e544f2..5525c2c8aba 100644 --- a/lib/optimize/SplitChunksPlugin.js +++ b/lib/optimize/SplitChunksPlugin.js @@ -645,7 +645,7 @@ module.exports = class SplitChunksPlugin { isReused = true; } } - // Check if maxRequests condition can be fullfilled + // Check if maxRequests condition can be fulfilled const usedChunks = Array.from(item.chunks).filter(chunk => { // skip if we address ourself diff --git a/lib/util/cachedMerge.js b/lib/util/cachedMerge.js index ff7b4426a62..124f647a3f4 100644 --- a/lib/util/cachedMerge.js +++ b/lib/util/cachedMerge.js @@ -7,7 +7,7 @@ const mergeCache = new WeakMap(); /** - * Merges two given objects and caches the result to avoid computation if same objects passed as arguements again. + * Merges two given objects and caches the result to avoid computation if same objects passed as arguments again. * @example * // performs Object.assign(first, second), stores the result in WeakMap and returns result * cachedMerge({a: 1}, {a: 2}) diff --git a/lib/util/deterministicGrouping.js b/lib/util/deterministicGrouping.js index 75827b0c1bb..7c47b823d1a 100644 --- a/lib/util/deterministicGrouping.js +++ b/lib/util/deterministicGrouping.js @@ -186,7 +186,7 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => { if (left <= right) { // when there is a area between left and right // we look for best split point - // we split at the minimum similiarity + // we split at the minimum similarity // here key space is separated the most let best = left - 1; let bestSimilarity = group.similarities[best]; From 79846d138f8d902adf3fef9fa67c1baa55e5d300 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 10 Jul 2018 10:23:28 +0200 Subject: [PATCH 26/41] make loc in context dependencies a correct object --- lib/ContextModule.js | 21 ++++++++++++++++++++- lib/Dependency.js | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/ContextModule.js b/lib/ContextModule.js index 9db2914b713..c2e4b81a3f8 100644 --- a/lib/ContextModule.js +++ b/lib/ContextModule.js @@ -12,11 +12,28 @@ const contextify = require("./util/identifier").contextify; /** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */ +/** + * @callback ResolveDependenciesCallback + * @param {Error=} err + * @param {ContextElementDependency[]} dependencies + */ + +/** + * @callback ResolveDependencies + * @param {TODO} fs + * @param {TODO} options + * @param {ResolveDependenciesCallback} callback + */ + class ContextModule extends Module { // type ContextMode = "sync" | "eager" | "weak" | "async-weak" | "lazy" | "lazy-once" // type ContextOptions = { resource: string, recursive: boolean, regExp: RegExp, addon?: string, mode?: ContextMode, chunkName?: string, include?: RegExp, exclude?: RegExp, groupOptions?: Object } // resolveDependencies: (fs: FS, options: ContextOptions, (err: Error?, dependencies: Dependency[]) => void) => void // options: ContextOptions + /** + * @param {ResolveDependencies} resolveDependencies function to get dependencies in this context + * @param {TODO} options options object + */ constructor(resolveDependencies, options) { let resource; let resourceQuery; @@ -194,7 +211,9 @@ class ContextModule extends Module { // enhance dependencies with meta info for (const dep of dependencies) { - dep.loc = dep.userRequest; + dep.loc = { + name: dep.userRequest + }; dep.request = this.options.addon + dep.request; } diff --git a/lib/Dependency.js b/lib/Dependency.js index 4b731a7323c..2f0c8fe0905 100644 --- a/lib/Dependency.js +++ b/lib/Dependency.js @@ -30,7 +30,7 @@ const DependencyReference = require("./dependencies/DependencyReference"); /** @typedef {Object} SynteticDependencyLocation * @property {string} name - * @property {number} index + * @property {number=} index */ /** @typedef {SynteticDependencyLocation|RealDependencyLocation} DependencyLocation */ From 9362a65287c2896891ac1d1dad050df3568e303a Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 10 Jul 2018 10:24:22 +0200 Subject: [PATCH 27/41] copy chunk reason to maxSize parts --- lib/optimize/SplitChunksPlugin.js | 1 + test/__snapshots__/StatsTestCases.test.js.snap | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/optimize/SplitChunksPlugin.js b/lib/optimize/SplitChunksPlugin.js index 5525c2c8aba..d53fb5375f2 100644 --- a/lib/optimize/SplitChunksPlugin.js +++ b/lib/optimize/SplitChunksPlugin.js @@ -831,6 +831,7 @@ module.exports = class SplitChunksPlugin { if (i !== results.length - 1) { newPart = compilation.addChunk(name); chunk.split(newPart); + newPart.chunkReason = chunk.chunkReason; // Add all modules to the new chunk for (const module of group.items) { if (typeof module.chunkCondition === "function") { diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index 4951bd664da..1b3e0277f93 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -2841,7 +2841,7 @@ exports[`StatsTestCases should print correct stats for split-chunks-max-size 1`] chunk {11} prod-main~cd7c5bfc.js (main~cd7c5bfc) 1.57 KiB ={0}= ={1}= ={10}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] > ./ main [13] ./very-big.js?3 1.57 KiB {11} [built] - chunk {12} prod-vendors~main~7274e1de.js (vendors~main~7274e1de) 402 bytes ={0}= ={1}= ={10}= ={11}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + chunk {12} prod-vendors~main~7274e1de.js (vendors~main~7274e1de) 402 bytes ={0}= ={1}= ={10}= ={11}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~main) > ./ main [40] ./node_modules/big.js?1 268 bytes {12} [built] [41] ./node_modules/small.js?1 67 bytes {12} [built] @@ -2911,7 +2911,7 @@ Child development: chunk {main~._very-big.js~62f7f644} dev-main~._very-big.js~62f7f644.js (main~._very-big.js~62f7f644) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [entry] [rendered] > ./ main [./very-big.js?1] 1.57 KiB {main~._very-big.js~62f7f644} [built] - chunk {vendors~main~._node_modules_b} dev-vendors~main~._node_modules_b.js (vendors~main~._node_modules_b) 402 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + chunk {vendors~main~._node_modules_b} dev-vendors~main~._node_modules_b.js (vendors~main~._node_modules_b) 402 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~main) > ./ main [./node_modules/big.js?1] 268 bytes {vendors~main~._node_modules_b} [built] [./node_modules/small.js?1] 67 bytes {vendors~main~._node_modules_b} [built] From d8cd5d04deebb95a1186517d9b1f54eb402c42fb Mon Sep 17 00:00:00 2001 From: Mathias Bynens Date: Mon, 9 Jul 2018 22:16:01 +0200 Subject: [PATCH 28/41] Add .mjs to default DelegatedModule options.extensions --- declarations.d.ts | 1 - lib/DelegatedModuleFactoryPlugin.js | 8 +++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/declarations.d.ts b/declarations.d.ts index 81a0b7c0f29..bd50da6c9b9 100644 --- a/declarations.d.ts +++ b/declarations.d.ts @@ -7,7 +7,6 @@ declare namespace NodeJS { } } - declare module "neo-async" { export interface Dictionary { [key: string]: T; diff --git a/lib/DelegatedModuleFactoryPlugin.js b/lib/DelegatedModuleFactoryPlugin.js index 26db0066f75..a0a05a43878 100644 --- a/lib/DelegatedModuleFactoryPlugin.js +++ b/lib/DelegatedModuleFactoryPlugin.js @@ -15,7 +15,13 @@ class DelegatedModuleFactoryPlugin { constructor(options) { this.options = options; options.type = options.type || "require"; - options.extensions = options.extensions || ["", ".js"]; + options.extensions = options.extensions || [ + "", + ".wasm", + ".mjs", + ".js", + ".json" + ]; } apply(normalModuleFactory) { From 692faf2e45c6a0f8245d31d9d24f4dfdbc9fb75e Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 10 Jul 2018 10:24:04 +0200 Subject: [PATCH 29/41] sort ids in Stats numerical --- lib/Stats.js | 14 ++- .../__snapshots__/StatsTestCases.test.js.snap | 102 +++++++++--------- 2 files changed, 61 insertions(+), 55 deletions(-) diff --git a/lib/Stats.js b/lib/Stats.js index b6db2396c15..ecb373f00cb 100644 --- a/lib/Stats.js +++ b/lib/Stats.js @@ -15,6 +15,12 @@ const optionsOrFallback = (...args) => { return optionValues.find(optionValue => typeof optionValue !== "undefined"); }; +const compareId = (a, b) => { + if (a < b) return -1; + if (a > b) return 1; + return 0; +}; + class Stats { constructor(compilation) { this.compilation = compilation; @@ -543,7 +549,7 @@ class Stats { } return obj; }) - .sort((a, b) => a.moduleId - b.moduleId); + .sort(compareId); } if (showUsedExports) { if (module.used === true) { @@ -614,9 +620,9 @@ class Stats { names: chunk.name ? [chunk.name] : [], files: chunk.files.slice(), hash: chunk.renderedHash, - siblings: Array.from(siblings).sort(), - parents: Array.from(parents).sort(), - children: Array.from(children).sort(), + siblings: Array.from(siblings).sort(compareId), + parents: Array.from(parents).sort(compareId), + children: Array.from(children).sort(compareId), childrenByOrder: childIdByOrder }; if (showChunkModules) { diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index 4951bd664da..f125811ae30 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -83,7 +83,7 @@ chunk {1} 29de52df747b400f6177.js 899 bytes <{10}> ={0}= ={2}= ={8}= > ./c ./d ./e [11] ./index.js 3:0-30 > ./b ./d ./e ./f ./g [11] ./index.js 5:0-44 [2] ./e.js 899 bytes {1} {3} [built] -chunk {2} 7f83e5c2f4e52435dd2c.js 1.76 KiB <{10}> ={0}= ={1}= ={11}= ={3}= ={6}= ={7}= ={9}= [recorded] aggressive splitted +chunk {2} 7f83e5c2f4e52435dd2c.js 1.76 KiB <{10}> ={0}= ={1}= ={3}= ={6}= ={7}= ={9}= ={11}= [recorded] aggressive splitted > ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51 > ./b ./d ./e ./f ./g [11] ./index.js 5:0-44 > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 @@ -100,7 +100,7 @@ chunk {5} e5fb899955fa03a8053b.js 1.76 KiB <{10}> > ./b ./c [11] ./index.js 2:0-23 [0] ./b.js 899 bytes {0} {5} [built] [5] ./c.js 899 bytes {5} {8} [built] -chunk {6} 58f368c01f66002b0eb3.js 1.76 KiB <{10}> ={11}= ={2}= +chunk {6} 58f368c01f66002b0eb3.js 1.76 KiB <{10}> ={2}= ={11}= > ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51 [8] ./j.js 901 bytes {6} {9} [built] [9] ./k.js 899 bytes {6} {7} [built] @@ -115,7 +115,7 @@ chunk {9} 13713792eb1b5038ab8b.js 1.76 KiB <{10}> ={0}= ={2}= ={3}= ={7}= [re > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 [7] ./i.js 899 bytes {9} {11} [built] [8] ./j.js 901 bytes {6} {9} [built] -chunk {10} d886db099ddf05aadc6d.js (main) 248 bytes >{0}< >{1}< >{11}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< >{8}< >{9}< [entry] [rendered] +chunk {10} d886db099ddf05aadc6d.js (main) 248 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< >{8}< >{9}< >{11}< [entry] [rendered] > ./index main [11] ./index.js 248 bytes {10} [built] chunk {11} ba9fedb7aa0c69201639.js 1.76 KiB <{10}> ={2}= ={6}= [rendered] [recorded] aggressive splitted @@ -217,7 +217,7 @@ Child default: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{4}> <{9}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{4}> <{9}> <{10}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 @@ -238,7 +238,7 @@ Child default: chunk {6} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={8}= [rendered] > ./c [8] ./index.js 3:0-47 [6] ./c.js 72 bytes {6} {12} [built] - chunk {7} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{4}> ={2}= [rendered] + chunk {7} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{4}> <{10}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 [9] ./g.js 34 bytes {7} [built] @@ -333,7 +333,7 @@ Child multiple-vendors: Entrypoint a = multiple-vendors/libs-x.js multiple-vendors/vendors~a~async-a~async-b~b.js multiple-vendors/a.js Entrypoint b = multiple-vendors/libs-x.js multiple-vendors/vendors~a~async-a~async-b~b.js multiple-vendors/b.js Entrypoint c = multiple-vendors/libs-x.js multiple-vendors/vendors~async-c~c.js multiple-vendors/c.js - chunk {0} multiple-vendors/libs-x.js (libs-x) 20 bytes <{9}> ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x) + chunk {0} multiple-vendors/libs-x.js (libs-x) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x) > ./a a > ./b b > ./c c @@ -346,19 +346,19 @@ Child multiple-vendors: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} multiple-vendors/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{5}> <{9}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + chunk {2} multiple-vendors/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{5}> <{9}> <{10}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} multiple-vendors/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={10}= ={11}= ={2}= ={5}= ={6}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + chunk {3} multiple-vendors/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={5}= ={6}= ={10}= ={11}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) > ./a a > ./b b > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} multiple-vendors/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={7}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + chunk {4} multiple-vendors/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={7}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] @@ -373,7 +373,7 @@ Child multiple-vendors: chunk {7} multiple-vendors/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} multiple-vendors/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{5}> ={2}= [rendered] + chunk {8} multiple-vendors/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{10}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 [9] ./g.js 34 bytes {8} [built] @@ -401,7 +401,7 @@ Child all: Entrypoint a = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~a~async-a~async-b~b.js all/a.js Entrypoint b = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~a~async-a~async-b~b.js all/b.js Entrypoint c = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~async-c~c.js all/c.js - chunk {0} all/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) + chunk {0} all/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) > ./a a > ./b b > ./c c @@ -414,19 +414,19 @@ Child all: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} all/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{5}> <{9}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + chunk {2} all/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{5}> <{9}> <{10}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} all/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={10}= ={11}= ={2}= ={5}= ={6}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + chunk {3} all/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={5}= ={6}= ={10}= ={11}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) > ./a a > ./b b > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} all/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={7}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + chunk {4} all/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={7}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] @@ -441,7 +441,7 @@ Child all: chunk {7} all/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} all/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{5}> ={2}= [rendered] + chunk {8} all/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{10}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 [9] ./g.js 34 bytes {8} [built] @@ -1821,7 +1821,7 @@ chunk {6} inner2.js (inner2) 0 bytes <{0}> [rendered]" exports[`StatsTestCases should print correct stats for prefetch-preload-mixed 1`] = ` "chunk {0} a.js (a) 136 bytes <{3}> >{4}< >{5}< (prefetch: {4} {5}) [rendered] chunk {1} b.js (b) 203 bytes <{3}> >{6}< >{7}< >{8}< (prefetch: {6} {8}) (preload: {7}) [rendered] -chunk {2} c.js (c) 134 bytes <{3}> >{10}< >{9}< (preload: {9} {10}) [rendered] +chunk {2} c.js (c) 134 bytes <{3}> >{9}< >{10}< (preload: {9} {10}) [rendered] chunk {3} main.js (main) 195 bytes >{0}< >{1}< >{2}< (prefetch: {0} {1} {2}) [entry] [rendered] chunk {4} a1.js (a1) 0 bytes <{0}> [rendered] chunk {5} a2.js (a2) 0 bytes <{0}> [rendered] @@ -2214,9 +2214,9 @@ Entrypoint main = main.js | single entry ./main.js main | ./components/src/CompAB/CompB.js 77 bytes [built] | [only some exports used: default] - | harmony import specifier ./components ./main.js 4:15-20 (skipped side-effect-free modules) | harmony side effect evaluation ./CompB [7] ./components/src/CompAB/index.js 2:0-43 | harmony export imported specifier ./CompB [7] ./components/src/CompAB/index.js 2:0-43 + | harmony import specifier ./components ./main.js 4:15-20 (skipped side-effect-free modules) [2] ./components/src/index.js 84 bytes [built] [no exports used] harmony side effect evaluation ./components [1] ./main.js + 1 modules 1:0-44 @@ -2301,7 +2301,7 @@ exports[`StatsTestCases should print correct stats for split-chunks 1`] = ` > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{4}> <{9}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{4}> <{9}> <{10}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 @@ -2322,7 +2322,7 @@ exports[`StatsTestCases should print correct stats for split-chunks 1`] = ` chunk {6} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={8}= [rendered] > ./c [8] ./index.js 3:0-47 [6] ./c.js 72 bytes {6} {12} [built] - chunk {7} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{4}> ={2}= [rendered] + chunk {7} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{4}> <{10}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 [9] ./g.js 34 bytes {7} [built] @@ -2359,7 +2359,7 @@ Child all-chunks: Entrypoint a = default/vendors~a~async-a~async-b~async-c~b~c.js default/vendors~a~async-a~async-b~b.js default/a.js Entrypoint b = default/vendors~a~async-a~async-b~async-c~b~c.js default/vendors~a~async-a~async-b~b.js default/b.js Entrypoint c = default/vendors~a~async-a~async-b~async-c~b~c.js default/vendors~async-c~c.js default/c.js - chunk {0} default/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) + chunk {0} default/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) > ./a a > ./b b > ./c c @@ -2372,19 +2372,19 @@ Child all-chunks: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{5}> <{9}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{5}> <{9}> <{10}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} default/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={10}= ={11}= ={2}= ={5}= ={6}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + chunk {3} default/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={5}= ={6}= ={10}= ={11}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) > ./a a > ./b b > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={7}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={7}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] @@ -2399,7 +2399,7 @@ Child all-chunks: chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{5}> ={2}= [rendered] + chunk {8} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{10}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 [9] ./g.js 34 bytes {8} [built] @@ -2483,7 +2483,7 @@ Child name-too-long: Entrypoint aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js async-a.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js Entrypoint bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js async-b.js bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js Entrypoint cccccccccccccccccccccccccccccc = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js vendors~async-c~cccccccccccccccccccccccccccccc.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js async-c.js cccccccccccccccccccccccccccccc.js - chunk {0} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) 20 bytes <{9}> ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) + chunk {0} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./c cccccccccccccccccccccccccccccc @@ -2491,7 +2491,7 @@ Child name-too-long: > ./b [4] ./index.js 2:0-47 > ./c [4] ./index.js 3:0-47 [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) 20 bytes <{9}> ={0}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: default) (name: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) + chunk {1} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: default) (name: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./c cccccccccccccccccccccccccccccc @@ -2499,7 +2499,7 @@ Child name-too-long: > ./b [4] ./index.js 2:0-47 > ./c [4] ./index.js 3:0-47 [1] ./d.js 20 bytes {1} [built] - chunk {2} async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js (async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) 20 bytes <{0}> <{1}> <{10}> <{3}> <{4}> <{9}> ={0}= ={1}= ={11}= ={12}= ={3}= ={5}= ={6}= ={7}= ={8}= [initial] [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) + chunk {2} async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js (async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) 20 bytes <{0}> <{1}> <{3}> <{4}> <{9}> <{10}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={8}= ={11}= ={12}= [initial] [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb @@ -2507,31 +2507,31 @@ Child name-too-long: > ./b [4] ./index.js 2:0-47 > ./c [4] ./index.js 3:0-47 [0] ./f.js 20 bytes {2} [built] - chunk {3} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 20 bytes <{9}> ={0}= ={1}= ={10}= ={11}= ={2}= ={4}= ={5}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + chunk {3} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 20 bytes <{9}> ={0}= ={1}= ={2}= ={4}= ={5}= ={10}= ={11}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./a [4] ./index.js 1:0-47 > ./b [4] ./index.js 2:0-47 [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={10}= ={3}= >{2}< >{8}< [initial] [rendered] reused as split chunk (cache group: default) + chunk {4} async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= ={10}= >{2}< >{8}< [initial] [rendered] reused as split chunk (cache group: default) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./a [4] ./index.js 1:0-47 [8] ./a.js + 1 modules 156 bytes {4} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {5} async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={11}= ={2}= ={3}= [initial] [rendered] reused as split chunk (cache group: default) + chunk {5} async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= ={11}= [initial] [rendered] reused as split chunk (cache group: default) > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./b [4] ./index.js 2:0-47 [5] ./b.js 72 bytes {5} [built] - chunk {6} async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={7}= [initial] [rendered] reused as split chunk (cache group: default) + chunk {6} async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={7}= ={12}= [initial] [rendered] reused as split chunk (cache group: default) > ./c cccccccccccccccccccccccccccccc > ./c [4] ./index.js 3:0-47 [6] ./c.js 72 bytes {6} [built] - chunk {7} vendors~async-c~cccccccccccccccccccccccccccccc.js (vendors~async-c~cccccccccccccccccccccccccccccc) 20 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={6}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~cccccccccccccccccccccccccccccc) + chunk {7} vendors~async-c~cccccccccccccccccccccccccccccc.js (vendors~async-c~cccccccccccccccccccccccccccccc) 20 bytes <{9}> ={0}= ={1}= ={2}= ={6}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~cccccccccccccccccccccccccccccc) > ./c cccccccccccccccccccccccccccccc > ./c [4] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {7} [built] - chunk {8} async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{4}> ={2}= [rendered] + chunk {8} async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{4}> <{10}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 [9] ./g.js 34 bytes {8} [built] @@ -2549,7 +2549,7 @@ Child custom-chunks-filter: Entrypoint a = default/a.js Entrypoint b = default/vendors~async-a~async-b~async-c~b~c.js default/vendors~async-a~async-b~b.js default/b.js Entrypoint c = default/vendors~async-a~async-b~async-c~b~c.js default/vendors~async-c~c.js default/c.js - chunk {0} default/vendors~async-a~async-b~async-c~b~c.js (vendors~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c~b~c) + chunk {0} default/vendors~async-a~async-b~async-c~b~c.js (vendors~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c~b~c) > ./b b > ./c c > ./a [8] ./index.js 1:0-47 @@ -2561,18 +2561,18 @@ Child custom-chunks-filter: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{5}> <{9}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{5}> <{9}> <{10}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} default/vendors~async-a~async-b~b.js (vendors~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={11}= ={2}= ={5}= ={6}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~b) + chunk {3} default/vendors~async-a~async-b~b.js (vendors~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={5}= ={6}= ={11}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~b) > ./b b > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 [3] ./node_modules/y.js 20 bytes {3} {10} [built] - chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={7}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={7}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] @@ -2587,7 +2587,7 @@ Child custom-chunks-filter: chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{5}> ={2}= [rendered] + chunk {8} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{10}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 [9] ./g.js 34 bytes {8} [built] @@ -2775,30 +2775,30 @@ chunk {3} b.js (b) 43 bytes >{0}< >{1}< [entry] [rendered] exports[`StatsTestCases should print correct stats for split-chunks-max-size 1`] = ` "Child production: Entrypoint main = prod-vendors~main~7274e1de.js prod-vendors~main~0feae4ad.js prod-main~6e7ead72.js prod-main~6a2ae26b.js prod-main~17acad98.js prod-main~b2c7414a.js prod-main~75f09de8.js prod-main~052b3814.js prod-main~3ff27526.js prod-main~11485824.js prod-main~c6931360.js prod-main~cd7c5bfc.js prod-main~02369f19.js - chunk {0} prod-main~02369f19.js (main~02369f19) 1.57 KiB ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [entry] [rendered] + chunk {0} prod-main~02369f19.js (main~02369f19) 1.57 KiB ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [entry] [rendered] > ./ main [11] ./very-big.js?1 1.57 KiB {0} [built] - chunk {1} prod-vendors~main~0feae4ad.js (vendors~main~0feae4ad) 1.57 KiB ={0}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~main) + chunk {1} prod-vendors~main~0feae4ad.js (vendors~main~0feae4ad) 1.57 KiB ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~main) > ./ main [43] ./node_modules/very-big.js?1 1.57 KiB {1} [built] - chunk {2} prod-main~6e7ead72.js (main~6e7ead72) 536 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + chunk {2} prod-main~6e7ead72.js (main~6e7ead72) 536 bytes ={0}= ={1}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] > ./ main [0] ./big.js?1 268 bytes {2} [built] [1] ./big.js?2 268 bytes {2} [built] - chunk {3} prod-main~6a2ae26b.js (main~6a2ae26b) 536 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + chunk {3} prod-main~6a2ae26b.js (main~6a2ae26b) 536 bytes ={0}= ={1}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] > ./ main [34] ./in-some-directory/big.js?1 268 bytes {3} [built] [35] ./in-some-directory/small.js?1 67 bytes {3} [built] [36] ./in-some-directory/small.js?2 67 bytes {3} [built] [37] ./in-some-directory/small.js?3 67 bytes {3} [built] [38] ./in-some-directory/small.js?4 67 bytes {3} [built] - chunk {4} prod-main~17acad98.js (main~17acad98) 1.57 KiB ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + chunk {4} prod-main~17acad98.js (main~17acad98) 1.57 KiB ={0}= ={1}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] > ./ main [39] ./in-some-directory/very-big.js?1 1.57 KiB {4} [built] - chunk {5} prod-main~b2c7414a.js (main~b2c7414a) 1.19 KiB ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + chunk {5} prod-main~b2c7414a.js (main~b2c7414a) 1.19 KiB ={0}= ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] > ./ main [44] ./index.js 1.19 KiB {5} [built] - chunk {6} prod-main~75f09de8.js (main~75f09de8) 603 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={7}= ={8}= ={9}= [initial] [rendered] + chunk {6} prod-main~75f09de8.js (main~75f09de8) 603 bytes ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] > ./ main [25] ./inner-module/small.js?1 67 bytes {6} [built] [26] ./inner-module/small.js?2 67 bytes {6} [built] @@ -2809,7 +2809,7 @@ exports[`StatsTestCases should print correct stats for split-chunks-max-size 1`] [31] ./inner-module/small.js?7 67 bytes {6} [built] [32] ./inner-module/small.js?8 67 bytes {6} [built] [33] ./inner-module/small.js?9 67 bytes {6} [built] - chunk {7} prod-main~052b3814.js (main~052b3814) 603 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= ={9}= [initial] [rendered] + chunk {7} prod-main~052b3814.js (main~052b3814) 603 bytes ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] > ./ main [2] ./small.js?1 67 bytes {7} [built] [3] ./small.js?2 67 bytes {7} [built] @@ -2820,11 +2820,11 @@ exports[`StatsTestCases should print correct stats for split-chunks-max-size 1`] [8] ./small.js?7 67 bytes {7} [built] [9] ./small.js?8 67 bytes {7} [built] [10] ./small.js?9 67 bytes {7} [built] - chunk {8} prod-main~3ff27526.js (main~3ff27526) 536 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={9}= [initial] [rendered] + chunk {8} prod-main~3ff27526.js (main~3ff27526) 536 bytes ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] > ./ main [14] ./subfolder/big.js?1 268 bytes {8} [built] [15] ./subfolder/big.js?2 268 bytes {8} [built] - chunk {9} prod-main~11485824.js (main~11485824) 603 bytes ={0}= ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= [initial] [rendered] + chunk {9} prod-main~11485824.js (main~11485824) 603 bytes ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={10}= ={11}= ={12}= [initial] [rendered] > ./ main [16] ./subfolder/small.js?1 67 bytes {9} [built] [17] ./subfolder/small.js?2 67 bytes {9} [built] @@ -2835,13 +2835,13 @@ exports[`StatsTestCases should print correct stats for split-chunks-max-size 1`] [22] ./subfolder/small.js?7 67 bytes {9} [built] [23] ./subfolder/small.js?8 67 bytes {9} [built] [24] ./subfolder/small.js?9 67 bytes {9} [built] - chunk {10} prod-main~c6931360.js (main~c6931360) 1.57 KiB ={0}= ={1}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + chunk {10} prod-main~c6931360.js (main~c6931360) 1.57 KiB ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={11}= ={12}= [initial] [rendered] > ./ main [12] ./very-big.js?2 1.57 KiB {10} [built] - chunk {11} prod-main~cd7c5bfc.js (main~cd7c5bfc) 1.57 KiB ={0}= ={1}= ={10}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + chunk {11} prod-main~cd7c5bfc.js (main~cd7c5bfc) 1.57 KiB ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={12}= [initial] [rendered] > ./ main [13] ./very-big.js?3 1.57 KiB {11} [built] - chunk {12} prod-vendors~main~7274e1de.js (vendors~main~7274e1de) 402 bytes ={0}= ={1}= ={10}= ={11}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= [initial] [rendered] + chunk {12} prod-vendors~main~7274e1de.js (vendors~main~7274e1de) 402 bytes ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= [initial] [rendered] > ./ main [40] ./node_modules/big.js?1 268 bytes {12} [built] [41] ./node_modules/small.js?1 67 bytes {12} [built] From a4825654eb4642b3c51d6f59a9b4dc3b410565df Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 10 Jul 2018 12:18:34 +0200 Subject: [PATCH 30/41] upgrade jest --- .eslintrc.js | 5 +- package.json | 10 +- test/ConfigTestCases.test.js | 2 + test/HotTestCases.test.js | 1 + test/TestCases.template.js | 1 + test/WatchTestCases.test.js | 2 + test/cases/chunks/import-context/index.js | 7 +- test/cases/chunks/import/index.js | 7 +- test/cases/chunks/inline-options/index.js | 14 +- test/cases/chunks/issue-2443/index.js | 7 +- test/cases/json/import-lazy/index.js | 49 +- test/cases/mjs/cjs-import-default/index.mjs | 35 +- .../cases/mjs/namespace-object-lazy/index.mjs | 28 +- .../non-mjs-namespace-object-lazy/index.js | 22 +- .../index.js | 2 +- .../optimize/tree-shaking-star2/index.js | 7 +- .../parsing/harmony-commonjs-mix/index.js | 7 +- test/cases/parsing/issue-2050/index.js | 7 +- test/cases/parsing/issue-2522/index.js | 7 +- test/cases/parsing/issue-3964/index.js | 2 +- test/cases/parsing/issue-4179/index.js | 2 +- .../scope-hoisting/export-namespace/index.js | 14 +- .../issue-5020-minimal/index.js | 19 +- test/cases/scope-hoisting/issue-5020/index.js | 51 +- test/cases/scope-hoisting/issue-5443/index.js | 7 +- .../side-effects/missing-module-7499/index.js | 7 +- .../System.import/index.js | 2 +- .../dll-plugin-entry/1-use-dll/index.js | 2 +- .../configCases/dll-plugin/1-use-dll/index.js | 2 +- .../2-use-dll-without-scope/index.js | 2 +- .../dll-plugin/3-use-dll-with-hashid/index.js | 2 +- .../parsing/system.import/index.js | 2 +- .../target/node-dynamic-import/index.js | 28 +- .../concat/reload-compat-flag/index.js | 14 +- .../plugins/define-plugin/0/index.js | 14 +- yarn.lock | 703 ++++++++++-------- 36 files changed, 561 insertions(+), 532 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 477b21dbaef..639c80155a3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -61,7 +61,7 @@ module.exports = { browser: true }, globals: { - Promise: false, + Promise: false }, parserOptions: { ecmaVersion: 5 @@ -71,6 +71,9 @@ module.exports = { files: ["test/**/*.js"], env: { "jest/globals": true + }, + globals: { + nsObj: false } } ] diff --git a/package.json b/package.json index b6f5c9b309f..3649114fdd7 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "istanbul": "^0.4.5", "jade": "^1.11.0", "jade-loader": "~0.8.0", - "jest": "^23.0.1", + "jest": "^23.3.0", "jest-silent-reporter": "^0.0.5", "json-loader": "^0.5.7", "less": "^2.5.1", @@ -82,6 +82,14 @@ "worker-loader": "^1.1.1", "xxhashjs": "^0.2.1" }, + "resolutions": { + "**/jest-message-util/micromatch": "^2.3.11", + "**/jest-cli/micromatch": "^2.3.11", + "**/jest-runtime/micromatch": "^2.3.11", + "**/jest-haste-map/micromatch": "^2.3.11", + "**/jest-haste-map/sane/micromatch": "^2.3.11", + "**/jest-config/babel-jest/babel-plugin-istanbul/test-exclude/micromatch": "^2.3.11" + }, "engines": { "node": ">=6.11.5" }, diff --git a/test/ConfigTestCases.test.js b/test/ConfigTestCases.test.js index 008d3b6d49d..7776de34c39 100644 --- a/test/ConfigTestCases.test.js +++ b/test/ConfigTestCases.test.js @@ -211,6 +211,7 @@ describe("ConfigTestCases", () => { ) { fn = vm.runInNewContext( "(function(require, module, exports, __dirname, __filename, it, beforeEach, afterEach, expect, jest, window) {" + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + content + "\n})", globalContext, @@ -220,6 +221,7 @@ describe("ConfigTestCases", () => { fn = vm.runInThisContext( "(function(require, module, exports, __dirname, __filename, it, beforeEach, afterEach, expect, jest) {" + "global.expect = expect; " + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + content + "\n})", p diff --git a/test/HotTestCases.test.js b/test/HotTestCases.test.js index 66001829d80..6c64a6e03a0 100644 --- a/test/HotTestCases.test.js +++ b/test/HotTestCases.test.js @@ -151,6 +151,7 @@ describe("HotTestCases", () => { const fn = vm.runInThisContext( "(function(require, module, exports, __dirname, __filename, it, expect, NEXT, STATS) {" + "global.expect = expect;" + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + fs.readFileSync(p, "utf-8") + "\n})", p diff --git a/test/TestCases.template.js b/test/TestCases.template.js index 89e63c7cadb..39ff2bdf5a9 100644 --- a/test/TestCases.template.js +++ b/test/TestCases.template.js @@ -216,6 +216,7 @@ const describeCases = config => { const fn = vm.runInThisContext( "(function(require, module, exports, __dirname, it, expect) {" + "global.expect = expect;" + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + fs.readFileSync(p, "utf-8") + "\n})", p diff --git a/test/WatchTestCases.test.js b/test/WatchTestCases.test.js index a1d957aacbc..b425f099a8a 100644 --- a/test/WatchTestCases.test.js +++ b/test/WatchTestCases.test.js @@ -245,6 +245,7 @@ describe("WatchTestCases", () => { ) { fn = vm.runInNewContext( "(function(require, module, exports, __dirname, __filename, it, WATCH_STEP, STATS_JSON, STATE, expect, window) {" + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + content + "\n})", globalContext, @@ -254,6 +255,7 @@ describe("WatchTestCases", () => { fn = vm.runInThisContext( "(function(require, module, exports, __dirname, __filename, it, WATCH_STEP, STATS_JSON, STATE, expect) {" + "global.expect = expect;" + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + content + "\n})", p diff --git a/test/cases/chunks/import-context/index.js b/test/cases/chunks/import-context/index.js index 9392c88775f..3f5e41d5ad6 100644 --- a/test/cases/chunks/import-context/index.js +++ b/test/cases/chunks/import-context/index.js @@ -23,10 +23,9 @@ function testCase(load, done) { it("should be able to use expressions in import", function(done) { function load(name, expected, callback) { import("./dir/" + name).then(function(result) { - expect(result).toEqual({ - default: expected, - [Symbol.toStringTag]: "Module" - }); + expect(result).toEqual(nsObj({ + default: expected + })); callback(); }).catch(function(err) { done(err); diff --git a/test/cases/chunks/import/index.js b/test/cases/chunks/import/index.js index e9bbf35d5df..0810e5c7e88 100644 --- a/test/cases/chunks/import/index.js +++ b/test/cases/chunks/import/index.js @@ -1,9 +1,8 @@ it("should be able to use import", function(done) { import("./two").then(function(two) { - expect(two).toEqual({ - default: 2, - [Symbol.toStringTag]: "Module" - }); + expect(two).toEqual(nsObj({ + default: 2 + })); done(); }).catch(function(err) { done(err); diff --git a/test/cases/chunks/inline-options/index.js b/test/cases/chunks/inline-options/index.js index 23c60da711a..def7f37a3bf 100644 --- a/test/cases/chunks/inline-options/index.js +++ b/test/cases/chunks/inline-options/index.js @@ -110,17 +110,15 @@ function testChunkLoading(load, expectedSyncInitial, expectedSyncRequested) { sync = true; var p = Promise.all([ load("a").then(function(a) { - expect(a).toEqual({ - default: "a", - [Symbol.toStringTag]: "Module" - }); + expect(a).toEqual(nsObj({ + default: "a" + })); expect(sync).toBe(true); }), load("c").then(function(c) { - expect(c).toEqual({ - default: "c", - [Symbol.toStringTag]: "Module" - }); + expect(c).toEqual(nsObj({ + default: "c" + })); expect(sync).toBe(expectedSyncRequested); }) ]); diff --git a/test/cases/chunks/issue-2443/index.js b/test/cases/chunks/issue-2443/index.js index 76388fef631..731b88a8128 100644 --- a/test/cases/chunks/issue-2443/index.js +++ b/test/cases/chunks/issue-2443/index.js @@ -1,10 +1,9 @@ it("should be able to use expressions in import (directory)", function(done) { function load(name, expected, callback) { import("./dir/" + name + "/file.js").then(function(result) { - expect(result).toEqual({ - default: expected, - [Symbol.toStringTag]: "Module" - }); + expect(result).toEqual(nsObj({ + default: expected + })); callback(); }).catch(function(err) { done(err); diff --git a/test/cases/json/import-lazy/index.js b/test/cases/json/import-lazy/index.js index 2f01d1b61fa..2837ad304e6 100644 --- a/test/cases/json/import-lazy/index.js +++ b/test/cases/json/import-lazy/index.js @@ -9,27 +9,23 @@ it("should be possible to import json data async", function() { import("../data/f.json"), import("../data/g.json") ]).then(([a, b, c, d, e, f, g]) => { - expect(a).toEqual({ - default: null, - [Symbol.toStringTag]: "Module" - }); - expect(b).toEqual({ - default: 123, - [Symbol.toStringTag]: "Module" - }); - expect(c).toEqual({ + expect(a).toEqual(nsObj({ + default: null + })); + expect(b).toEqual(nsObj({ + default: 123 + })); + expect(c).toEqual(nsObj({ 0: 1, 1: 2, 2: 3, 3: 4, - default: [1, 2, 3, 4], - [Symbol.toStringTag]: "Module" - }); - expect(d).toEqual({ - default: {}, - [Symbol.toStringTag]: "Module" - }); - expect(e).toEqual({ + default: [1, 2, 3, 4] + })); + expect(d).toEqual(nsObj({ + default: {} + })); + expect(e).toEqual(nsObj({ aa: 1, bb: 2, 1: "x", @@ -37,25 +33,22 @@ it("should be possible to import json data async", function() { aa: 1, bb: 2, "1": "x" - }, - [Symbol.toStringTag]: "Module" - }); - expect(f).toEqual({ + } + })); + expect(f).toEqual(nsObj({ named: "named", default: { named: "named", "default": "default", __esModule: true - }, - [Symbol.toStringTag]: "Module" - }); - expect(g).toEqual({ + } + })); + expect(g).toEqual(nsObj({ named: {}, default: { named: {} - }, - [Symbol.toStringTag]: "Module" - }); + } + })); expect(g.named).toBe(g.default.named); }); }); diff --git a/test/cases/mjs/cjs-import-default/index.mjs b/test/cases/mjs/cjs-import-default/index.mjs index 2094d704219..1168325a807 100644 --- a/test/cases/mjs/cjs-import-default/index.mjs +++ b/test/cases/mjs/cjs-import-default/index.mjs @@ -17,33 +17,30 @@ it("should get correct values when importing named exports from a CommonJs modul default: "default" } }); - expect(star).toEqual({ + expect(star).toEqual(nsObj({ default: { data: "ok", default: "default" - }, - [Symbol.toStringTag]: "Module" - }); + } + })); expect({ star }).toEqual({ - star: { + star: nsObj({ default: { data: "ok", default: "default" - }, - [Symbol.toStringTag]: "Module" - } + } + }) }); expect(star.default).toEqual({ data: "ok", default: "default" }); - expect(ns).toEqual({ + expect(ns).toEqual(nsObj({ default: { data: "ok", default: "default" - }, - [Symbol.toStringTag]: "Module" - }); + } + })); expect(def1).toEqual({ data: "ok", default: "default" @@ -53,14 +50,13 @@ it("should get correct values when importing named exports from a CommonJs modul default: "default" }); expect((typeof data2)).toBe("undefined"); - expect(reexport).toEqual({ - ns: { + expect(reexport).toEqual(nsObj({ + ns: nsObj({ default: { data: "ok", default: "default" - }, - [Symbol.toStringTag]: "Module" - }, + } + }), default: { data: "ok", default: "default" @@ -69,7 +65,6 @@ it("should get correct values when importing named exports from a CommonJs modul data: "ok", default: "default" }, - data: undefined, - [Symbol.toStringTag]: "Module" - }); + data: undefined + })); }); diff --git a/test/cases/mjs/namespace-object-lazy/index.mjs b/test/cases/mjs/namespace-object-lazy/index.mjs index 539e66910d8..daf92e19219 100644 --- a/test/cases/mjs/namespace-object-lazy/index.mjs +++ b/test/cases/mjs/namespace-object-lazy/index.mjs @@ -1,13 +1,13 @@ it("should receive a namespace object when importing commonjs", function(done) { import("./cjs.js").then(function(result) { - expect(result).toEqual({ default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }); + expect(result).toEqual(nsObj({ default: { named: "named", default: "default" } })); done(); }).catch(done); }); it("should receive a namespace object when importing commonjs with __esModule", function(done) { import("./cjs-esmodule.js").then(function(result) { - expect(result).toEqual({ default: { __esModule: true, named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }); + expect(result).toEqual(nsObj({ default: { __esModule: true, named: "named", default: "default" } })); done(); }).catch(done); }); @@ -60,27 +60,27 @@ function promiseTest(promise, equalsTo) { it("should receive a namespace object when importing commonjs via context", function() { return Promise.all([ - promiseTest(contextCJS("one"), { default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextCJS("two"), { default: { __esModule: true, named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextCJS("three"), { default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextCJS("null"), { default: null, [Symbol.toStringTag]: "Module" }) + promiseTest(contextCJS("one"), nsObj({ default: { named: "named", default: "default" } })), + promiseTest(contextCJS("two"), nsObj({ default: { __esModule: true, named: "named", default: "default" } })), + promiseTest(contextCJS("three"), nsObj({ default: { named: "named", default: "default" } })), + promiseTest(contextCJS("null"), nsObj({ default: null })) ]); }); it("should receive a namespace object when importing harmony via context", function() { return Promise.all([ - promiseTest(contextHarmony("one"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextHarmony("two"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextHarmony("three"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }) + promiseTest(contextHarmony("one"), nsObj({ named: "named", default: "default" })), + promiseTest(contextHarmony("two"), nsObj({ named: "named", default: "default" })), + promiseTest(contextHarmony("three"), nsObj({ named: "named", default: "default" })) ]); }); it("should receive a namespace object when importing mixed content via context", function() { return Promise.all([ - promiseTest(contextMixed("one"), { default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("two"), { default: { __esModule: true, named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("three"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("null"), { default: null, [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("json.json"), { named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }) + promiseTest(contextMixed("one"), nsObj({ default: { named: "named", default: "default" } })), + promiseTest(contextMixed("two"), nsObj({ default: { __esModule: true, named: "named", default: "default" } })), + promiseTest(contextMixed("three"), nsObj({ named: "named", default: "default" })), + promiseTest(contextMixed("null"), nsObj({ default: null })), + promiseTest(contextMixed("json.json"), nsObj({ named: "named", default: { named: "named", default: "default" } })) ]); }); diff --git a/test/cases/mjs/non-mjs-namespace-object-lazy/index.js b/test/cases/mjs/non-mjs-namespace-object-lazy/index.js index 936032eb9b6..1059b4dc9d4 100644 --- a/test/cases/mjs/non-mjs-namespace-object-lazy/index.js +++ b/test/cases/mjs/non-mjs-namespace-object-lazy/index.js @@ -1,6 +1,6 @@ it("should receive a namespace object when importing commonjs", function(done) { import("./cjs").then(function(result) { - expect(result).toEqual({ named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }); + expect(result).toEqual(nsObj({ named: "named", default: { named: "named", default: "default" } })); done(); }).catch(done); }); @@ -60,27 +60,27 @@ function promiseTest(promise, equalsTo) { it("should receive a namespace object when importing commonjs via context", function() { return Promise.all([ - promiseTest(contextCJS("one"), { named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), + promiseTest(contextCJS("one"), nsObj({ named: "named", default: { named: "named", default: "default" } })), promiseTest(contextCJS("two"), { __esModule: true, named: "named", default: "default" }), - promiseTest(contextCJS("three"), { named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextCJS("null"), { default: null, [Symbol.toStringTag]: "Module" }) + promiseTest(contextCJS("three"), nsObj({ named: "named", default: { named: "named", default: "default" } })), + promiseTest(contextCJS("null"), nsObj({ default: null })) ]); }); it("should receive a namespace object when importing harmony via context", function() { return Promise.all([ - promiseTest(contextHarmony("one"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextHarmony("two"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextHarmony("three"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }) + promiseTest(contextHarmony("one"), nsObj({ named: "named", default: "default" })), + promiseTest(contextHarmony("two"), nsObj({ named: "named", default: "default" })), + promiseTest(contextHarmony("three"), nsObj({ named: "named", default: "default" })) ]); }); it("should receive a namespace object when importing mixed content via context", function() { return Promise.all([ - promiseTest(contextMixed("one"), { named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), + promiseTest(contextMixed("one"), nsObj({ named: "named", default: { named: "named", default: "default" } })), promiseTest(contextMixed("two"), { __esModule: true, named: "named", default: "default" }), - promiseTest(contextMixed("three"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("null"), { default: null, [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("json.json"), { named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }) + promiseTest(contextMixed("three"), nsObj({ named: "named", default: "default" })), + promiseTest(contextMixed("null"), nsObj({ default: null })), + promiseTest(contextMixed("json.json"), nsObj({ named: "named", default: { named: "named", default: "default" } })) ]); }); diff --git a/test/cases/optimize/side-effects-reexport-start-unknown/index.js b/test/cases/optimize/side-effects-reexport-start-unknown/index.js index 4c1a54309e3..2bdff81530b 100644 --- a/test/cases/optimize/side-effects-reexport-start-unknown/index.js +++ b/test/cases/optimize/side-effects-reexport-start-unknown/index.js @@ -2,5 +2,5 @@ import * as m from "m"; it("should handle unknown exports fine", function() { var x = m; - expect(x).toEqual({ foo: "foo", [Symbol.toStringTag]: "Module" }); + expect(x).toEqual(nsObj({ foo: "foo" })); }); diff --git a/test/cases/optimize/tree-shaking-star2/index.js b/test/cases/optimize/tree-shaking-star2/index.js index 676392638a8..0d1e070818d 100644 --- a/test/cases/optimize/tree-shaking-star2/index.js +++ b/test/cases/optimize/tree-shaking-star2/index.js @@ -6,9 +6,8 @@ it("should correctly tree shake star exports", function() { expect(aa).toBe("aa"); expect(aa2).toBe("aa"); expect(d).toBe("d"); - expect(root6).toEqual({ + expect(root6).toEqual(nsObj({ aa: "aa", - c: "c", - [Symbol.toStringTag]: "Module" - }); + c: "c" + })); }); diff --git a/test/cases/parsing/harmony-commonjs-mix/index.js b/test/cases/parsing/harmony-commonjs-mix/index.js index 7947bbf08a2..745a4323c78 100644 --- a/test/cases/parsing/harmony-commonjs-mix/index.js +++ b/test/cases/parsing/harmony-commonjs-mix/index.js @@ -1,7 +1,6 @@ it("should result in a warning when using module.exports in harmony module", function() { var x = require("./module1"); - expect(x).toEqual({ - default: 1234, - [Symbol.toStringTag]: "Module" - }); + expect(x).toEqual(nsObj({ + default: 1234 + })); }); diff --git a/test/cases/parsing/issue-2050/index.js b/test/cases/parsing/issue-2050/index.js index 4c28c4bac3e..6b05b3d8066 100644 --- a/test/cases/parsing/issue-2050/index.js +++ b/test/cases/parsing/issue-2050/index.js @@ -1,9 +1,8 @@ it("should support multiple reexports", function() { - expect(require("./x")).toEqual({ + expect(require("./x")).toEqual(nsObj({ xa: "a", xb: "b", xc: "c", - xd: "d", - [Symbol.toStringTag]: "Module" - }); + xd: "d" + })); }); diff --git a/test/cases/parsing/issue-2522/index.js b/test/cases/parsing/issue-2522/index.js index a727d989f25..e28c668496e 100644 --- a/test/cases/parsing/issue-2522/index.js +++ b/test/cases/parsing/issue-2522/index.js @@ -13,10 +13,9 @@ it("should import into object shorthand", function() { a: 123, aa: 123, b: 456, - c: { + c: nsObj({ a: 123, - default: 456, - [Symbol.toStringTag]: "Module" - } + default: 456 + }) }); }) diff --git a/test/cases/parsing/issue-3964/index.js b/test/cases/parsing/issue-3964/index.js index 9671c573578..f5765f4be7f 100644 --- a/test/cases/parsing/issue-3964/index.js +++ b/test/cases/parsing/issue-3964/index.js @@ -1,4 +1,4 @@ it("should be possible to export default an imported name", function() { var x = require("./module"); - expect(x).toEqual({ default: 1234, [Symbol.toStringTag]: "Module" }); + expect(x).toEqual(nsObj({ default: 1234 })); }); diff --git a/test/cases/parsing/issue-4179/index.js b/test/cases/parsing/issue-4179/index.js index 475b9e1ee1e..ff5224b2338 100644 --- a/test/cases/parsing/issue-4179/index.js +++ b/test/cases/parsing/issue-4179/index.js @@ -2,7 +2,7 @@ import def from "./module?harmony"; import * as mod from "./module?harmony-start" it("should export a sequence expression correctly", function() { - expect(require("./module?cjs")).toEqual({ default: 2, [Symbol.toStringTag]: "Module" }); + expect(require("./module?cjs")).toEqual(nsObj({ default: 2 })); expect(def).toBe(2); expect(mod.default).toBe(2); }); diff --git a/test/cases/scope-hoisting/export-namespace/index.js b/test/cases/scope-hoisting/export-namespace/index.js index f551d349e83..8020f45e589 100644 --- a/test/cases/scope-hoisting/export-namespace/index.js +++ b/test/cases/scope-hoisting/export-namespace/index.js @@ -2,17 +2,15 @@ import { ns as ns1 } from "./module1"; const ns2 = require("./module2").ns; it("should allow to export a namespace object (concated)", function() { - expect(ns1).toEqual({ + expect(ns1).toEqual(nsObj({ a: "a", - b: "b", - [Symbol.toStringTag]: "Module" - }); + b: "b" + })); }); it("should allow to export a namespace object (exposed)", function() { - expect(ns2).toEqual({ + expect(ns2).toEqual(nsObj({ a: "a", - b: "b", - [Symbol.toStringTag]: "Module" - }); + b: "b" + })); }); diff --git a/test/cases/scope-hoisting/issue-5020-minimal/index.js b/test/cases/scope-hoisting/issue-5020-minimal/index.js index c664793105a..cd70d349d65 100644 --- a/test/cases/scope-hoisting/issue-5020-minimal/index.js +++ b/test/cases/scope-hoisting/issue-5020-minimal/index.js @@ -1,14 +1,13 @@ var testData = require("./src/index.js"); it("should export the correct values", function() { - expect(testData).toEqual({ - icon: { - svg: { - default: 1, - [Symbol.toStringTag]: "Module" - }, - [Symbol.toStringTag]: "Module" - }, - [Symbol.toStringTag]: "Module" - }); + expect(testData).toEqual( + nsObj({ + icon: nsObj({ + svg: nsObj({ + default: 1 + }) + }) + }) + ); }); diff --git a/test/cases/scope-hoisting/issue-5020/index.js b/test/cases/scope-hoisting/issue-5020/index.js index df60a977d4e..a841b19370a 100644 --- a/test/cases/scope-hoisting/issue-5020/index.js +++ b/test/cases/scope-hoisting/issue-5020/index.js @@ -1,31 +1,28 @@ var testData = require("./src/index.js"); it("should export the correct values", function() { - expect(testData).toEqual({ - svg5: { - svg: { - clinical1: { - svg1: 1 - }, - clinical2: { - svg2: 2 - }, - [Symbol.toStringTag]: "Module" - }, - [Symbol.toStringTag]: "Module" - }, - svg6: { - svg: { - test: { - svg1: 10 - }, - clinical2: { - svg2: 20 - }, - [Symbol.toStringTag]: "Module" - }, - [Symbol.toStringTag]: "Module" - }, - [Symbol.toStringTag]: "Module" - }); + expect(testData).toEqual( + nsObj({ + svg5: nsObj({ + svg: nsObj({ + clinical1: { + svg1: 1 + }, + clinical2: { + svg2: 2 + } + }) + }), + svg6: nsObj({ + svg: nsObj({ + test: { + svg1: 10 + }, + clinical2: { + svg2: 20 + } + }) + }) + }) + ); }) diff --git a/test/cases/scope-hoisting/issue-5443/index.js b/test/cases/scope-hoisting/issue-5443/index.js index 30c2bdb7de3..f6d76307bc0 100644 --- a/test/cases/scope-hoisting/issue-5443/index.js +++ b/test/cases/scope-hoisting/issue-5443/index.js @@ -1,9 +1,8 @@ import { module } from "./reexport"; it("should have the correct values", function() { - expect(module).toEqual({ + expect(module).toEqual(nsObj({ default: "default", - named: "named", - [Symbol.toStringTag]: "Module" - }); + named: "named" + })); }); diff --git a/test/cases/side-effects/missing-module-7499/index.js b/test/cases/side-effects/missing-module-7499/index.js index 714aabf74b4..fea57ceb0c5 100644 --- a/test/cases/side-effects/missing-module-7499/index.js +++ b/test/cases/side-effects/missing-module-7499/index.js @@ -2,9 +2,8 @@ import './example' it("should run correctly", function() { return import('./lazy').then(lazy => { - expect(lazy.default()).toEqual({ - hello: "world", - [Symbol.toStringTag]: "Module" - }); + expect(lazy.default()).toEqual(nsObj({ + hello: "world" + })); }) }); diff --git a/test/configCases/context-replacement/System.import/index.js b/test/configCases/context-replacement/System.import/index.js index c2afdd5a49e..c96946800d2 100644 --- a/test/configCases/context-replacement/System.import/index.js +++ b/test/configCases/context-replacement/System.import/index.js @@ -1,6 +1,6 @@ it("should replace a async context with a manual map", function() { var a = "a"; return import(a).then(function(a) { - expect(a).toEqual({ default: "b", [Symbol.toStringTag]: "Module" }); + expect(a).toEqual(nsObj({ default: "b" })); }); }); diff --git a/test/configCases/dll-plugin-entry/1-use-dll/index.js b/test/configCases/dll-plugin-entry/1-use-dll/index.js index ec66e9e5fd9..203fc2d122f 100644 --- a/test/configCases/dll-plugin-entry/1-use-dll/index.js +++ b/test/configCases/dll-plugin-entry/1-use-dll/index.js @@ -1,7 +1,7 @@ import Answer, { bar } from "dll/index"; it("should load a module from dll", function() { - expect(require("dll/index")).toEqual({ bar: "bar", default: 42, [Symbol.toStringTag]: "Module" }); + expect(require("dll/index")).toEqual(nsObj({ bar: "bar", default: 42 })); }); it("should load an harmony module from dll (default export)", function() { diff --git a/test/configCases/dll-plugin/1-use-dll/index.js b/test/configCases/dll-plugin/1-use-dll/index.js index 7f844261291..9d0f47340b7 100644 --- a/test/configCases/dll-plugin/1-use-dll/index.js +++ b/test/configCases/dll-plugin/1-use-dll/index.js @@ -12,7 +12,7 @@ it("should load a module of non-default type without extension from dll", functi it("should load an async module from dll", function(done) { require("dll/b")().then(function(c) { - expect(c).toEqual({ default: "c", [Symbol.toStringTag]: "Module" }); + expect(c).toEqual(nsObj({ default: "c" })); done(); }).catch(done); }); diff --git a/test/configCases/dll-plugin/2-use-dll-without-scope/index.js b/test/configCases/dll-plugin/2-use-dll-without-scope/index.js index 704f6b1589c..28f81259339 100644 --- a/test/configCases/dll-plugin/2-use-dll-without-scope/index.js +++ b/test/configCases/dll-plugin/2-use-dll-without-scope/index.js @@ -12,7 +12,7 @@ it("should load a module of non-default type without extension from dll", functi it("should load an async module from dll", function(done) { require("../0-create-dll/b")().then(function(c) { - expect(c).toEqual({ default: "c", [Symbol.toStringTag]: "Module" }); + expect(c).toEqual(nsObj({ default: "c" })); done(); }).catch(done); }); diff --git a/test/configCases/dll-plugin/3-use-dll-with-hashid/index.js b/test/configCases/dll-plugin/3-use-dll-with-hashid/index.js index 0967a518eea..224bc015e73 100644 --- a/test/configCases/dll-plugin/3-use-dll-with-hashid/index.js +++ b/test/configCases/dll-plugin/3-use-dll-with-hashid/index.js @@ -8,7 +8,7 @@ it("should load a module from dll", function() { it("should load an async module from dll", function(done) { require("../0-create-dll/b")().then(function(c) { - expect(c).toEqual({ default: "c", [Symbol.toStringTag]: "Module" }); + expect(c).toEqual(nsObj({ default: "c" })); done(); }).catch(done); }); diff --git a/test/configCases/parsing/system.import/index.js b/test/configCases/parsing/system.import/index.js index 754a325d9f3..8310bbaf461 100644 --- a/test/configCases/parsing/system.import/index.js +++ b/test/configCases/parsing/system.import/index.js @@ -22,7 +22,7 @@ it("should be able to use System.import()", done => { if(__SYSTEM__ === false) { done(new Error("System.import should not be parsed")); } else { - expect(mod).toEqual({ default: "ok", [Symbol.toStringTag]: "Module" }); + expect(mod).toEqual(nsObj({ default: "ok" })); done(); } }); diff --git a/test/configCases/target/node-dynamic-import/index.js b/test/configCases/target/node-dynamic-import/index.js index 2c354b52920..43f1453b418 100644 --- a/test/configCases/target/node-dynamic-import/index.js +++ b/test/configCases/target/node-dynamic-import/index.js @@ -23,10 +23,9 @@ function testCase(load, done) { it("should be able to use expressions in import", function(done) { function load(name, expected, callback) { import("./dir/" + name + '.js') - .then((result) => {expect(result).toEqual({ - default: expected, - [Symbol.toStringTag]: "Module" - }); callback()}) + .then((result) => {expect(result).toEqual(nsObj({ + default: expected + })); callback()}) .catch((err) => {done(err)}); } testCase(load, done); @@ -35,10 +34,9 @@ it("should be able to use expressions in import", function(done) { it("should be able to use expressions in lazy-once import", function(done) { function load(name, expected, callback) { import(/* webpackMode: "lazy-once" */ "./dir/" + name + '.js') - .then((result) => {expect(result).toEqual({ - default: expected, - [Symbol.toStringTag]: "Module" - }); callback()}) + .then((result) => {expect(result).toEqual(nsObj({ + default: expected + })); callback()}) .catch((err) => {done(err)}); } testCase(load, done); @@ -47,10 +45,9 @@ it("should be able to use expressions in lazy-once import", function(done) { it("should be able to use expressions in import", function(done) { function load(name, expected, callback) { import("./dir2/" + name).then((result) => { - expect(result).toEqual({ - default: expected, - [Symbol.toStringTag]: "Module" - }); + expect(result).toEqual(nsObj({ + default: expected + })); callback(); }).catch((err) => { done(err); @@ -65,10 +62,9 @@ it("should convert to function in node", function() { it("should be able to use import", function(done) { import("./two").then((two) => { - expect(two).toEqual({ - default: 2, - [Symbol.toStringTag]: "Module" - }); + expect(two).toEqual(nsObj({ + default: 2 + })); done(); }).catch(function(err) { done(err); diff --git a/test/hotCases/concat/reload-compat-flag/index.js b/test/hotCases/concat/reload-compat-flag/index.js index 495849e609e..ddb2584ebb0 100644 --- a/test/hotCases/concat/reload-compat-flag/index.js +++ b/test/hotCases/concat/reload-compat-flag/index.js @@ -1,16 +1,14 @@ var x = require("./module"); it("should allow to hot replace modules in a ConcatenatedModule", (done) => { - expect(x).toEqual({ - default: "ok1", - [Symbol.toStringTag]: "Module" - }); + expect(x).toEqual(nsObj({ + default: "ok1" + })); module.hot.accept("./module", () => { x = require("./module"); - expect(x).toEqual({ - default: "ok2", - [Symbol.toStringTag]: "Module" - }); + expect(x).toEqual(nsObj({ + default: "ok2" + })); done(); }); NEXT(require("../../update")(done)); diff --git a/test/watchCases/plugins/define-plugin/0/index.js b/test/watchCases/plugins/define-plugin/0/index.js index 182e0f038f8..0a53ea7ddc2 100644 --- a/test/watchCases/plugins/define-plugin/0/index.js +++ b/test/watchCases/plugins/define-plugin/0/index.js @@ -1,17 +1,15 @@ it("should be able to use dynamic defines in watch mode", function() { const module = require("./module"); - expect(module).toEqual({ + expect(module).toEqual(nsObj({ default: WATCH_STEP, - type: "string", - [Symbol.toStringTag]: "Module" - }); + type: "string" + })); }); it("should not update a define when dependencies list is missing", function() { const module2 = require("./module2"); - expect(module2).toEqual({ + expect(module2).toEqual(nsObj({ default: "0", - type: "string", - [Symbol.toStringTag]: "Module" - }); + type: "string" + })); }); diff --git a/yarn.lock b/yarn.lock index 037df12f40a..739f52895d2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,14 +3,14 @@ "@babel/code-frame@^7.0.0-beta.35": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz#d18c2f4c4ba8d093a2bcfab5616593bfe2441a27" + version "7.0.0-beta.52" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.52.tgz#192483bfa0d1e467c101571c21029ccb74af2801" dependencies: - "@babel/highlight" "7.0.0-beta.47" + "@babel/highlight" "7.0.0-beta.52" -"@babel/highlight@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.47.tgz#8fbc83fb2a21f0bd2b95cdbeb238cf9689cad494" +"@babel/highlight@7.0.0-beta.52": + version "7.0.0-beta.52" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.52.tgz#ef24931432f06155e7bc39cdb8a6b37b4a28b3d0" dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -251,7 +251,11 @@ acorn@^4.0.4, acorn@~4.0.2: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" -acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0, acorn@^5.6.2: +acorn@^5.0.0, acorn@^5.3.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" + +acorn@^5.5.0, acorn@^5.6.2: version "5.6.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.2.tgz#b1da1d7be2ac1b4a327fb9eab851702c5045b4e7" @@ -324,18 +328,12 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0, ansi-styles@^3.2.1: +ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" dependencies: color-convert "^1.9.0" -ansi-styles@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" - any-observable@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" @@ -351,19 +349,19 @@ app-root-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" +append-transform@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" dependencies: - default-require-extensions "^1.0.0" + default-require-extensions "^2.0.0" aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -477,10 +475,10 @@ async@1.x, async@^1.4.0: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" async@^2.1.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: - lodash "^4.14.0" + lodash "^4.17.10" asynckit@^0.4.0: version "0.4.0" @@ -565,12 +563,12 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.0.1.tgz#bbad3bf523fb202da05ed0a6540b48c84eed13a6" +babel-jest@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.2.0.tgz#14a9d6a3f4122dfea6069d37085adf26a53a4dba" dependencies: babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.0.1" + babel-preset-jest "^23.2.0" babel-messages@^6.23.0: version "6.23.0" @@ -587,19 +585,19 @@ babel-plugin-istanbul@^4.1.6: istanbul-lib-instrument "^1.10.1" test-exclude "^4.2.1" -babel-plugin-jest-hoist@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.0.1.tgz#eaa11c964563aea9c21becef2bdf7853f7f3c148" +babel-plugin-jest-hoist@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" babel-plugin-syntax-object-rest-spread@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" -babel-preset-jest@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.0.1.tgz#631cc545c6cf021943013bcaf22f45d87fe62198" +babel-preset-jest@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" dependencies: - babel-plugin-jest-hoist "^23.0.1" + babel-plugin-jest-hoist "^23.2.0" babel-plugin-syntax-object-rest-spread "^6.13.0" babel-register@^6.26.0: @@ -631,7 +629,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.18.0, babel-traverse@^6.26.0: +babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: @@ -645,7 +643,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.26.0: invariant "^2.2.2" lodash "^4.17.4" -babel-types@^6.18.0, babel-types@^6.26.0: +babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: @@ -683,8 +681,8 @@ base@^0.11.1: pascalcase "^0.1.1" bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" dependencies: tweetnacl "^0.14.3" @@ -717,18 +715,6 @@ boom@2.x.x: dependencies: hoek "2.x.x" -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - dependencies: - hoek "4.x.x" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -767,9 +753,9 @@ browser-process-hrtime@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" -browser-resolve@^1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" +browser-resolve@^1.11.2, browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" dependencies: resolve "1.1.7" @@ -1126,6 +1112,10 @@ clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" +clorox@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clorox/-/clorox-1.0.3.tgz#6fa63653f280c33d69f548fb14d239ddcfa1590d" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -1170,12 +1160,22 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.3.0, color-convert@^1.9.0: +color-convert@^1.3.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" dependencies: color-name "^1.1.1" +color-convert@^1.9.0: + version "1.9.2" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" + dependencies: + color-name "1.1.1" + +color-name@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" + color-name@^1.0.0, color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" @@ -1235,8 +1235,8 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" compare-versions@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.2.1.tgz#a49eb7689d4caaf0b6db5220173fd279614000f7" + version "3.3.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.0.tgz#af93ea705a96943f622ab309578b9b90586f39c3" component-emitter@^1.2.1: version "1.2.1" @@ -1324,8 +1324,8 @@ core-js@^1.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" core-js@^2.4.0, core-js@^2.5.0: - version "2.5.6" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.6.tgz#0fe6d45bf3cac3ac364a9d72de7576f4eb221b9d" + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -1400,12 +1400,6 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - dependencies: - boom "5.x.x" - crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -1517,12 +1511,12 @@ csso@~2.3.1: source-map "^0.5.3" cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" + version "0.3.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" -"cssstyle@>= 0.2.37 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" +"cssstyle@>= 0.3.1 < 0.4.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.3.1.tgz#6da9b4cff1bc5d716e6e5fe8e04fcb1b50a49adf" dependencies: cssom "0.3.x" @@ -1586,19 +1580,19 @@ dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" -deep-extend@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" +default-require-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" dependencies: - strip-bom "^2.0.0" + strip-bom "^3.0.0" define-properties@^1.1.2: version "1.1.2" @@ -1780,15 +1774,21 @@ errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + dependencies: + is-arrayish "^0.2.1" + +error-ex@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: is-arrayish "^0.2.1" es-abstract@^1.5.1: - version "1.11.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" dependencies: es-to-primitive "^1.1.1" function-bind "^1.1.1" @@ -1828,8 +1828,8 @@ escodegen@1.8.x: source-map "~0.2.0" escodegen@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + version "1.10.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.10.0.tgz#f647395de22519fbd0d928ffcf1d17e0dec2603e" dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -1977,10 +1977,10 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" exec-sh@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" + version "0.2.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" dependencies: - merge "^1.1.3" + merge "^1.2.0" execa@^0.7.0: version "0.7.0" @@ -2049,16 +2049,16 @@ expect@^22.4.3: jest-message-util "^22.4.3" jest-regex-util "^22.4.3" -expect@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.0.1.tgz#99131f2fd9115595f8cc3697401e7f0734d45fef" +expect@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.3.0.tgz#ecb051adcbdc40ac4db576c16067f12fdb13cc61" dependencies: ansi-styles "^3.2.0" - jest-diff "^23.0.1" + jest-diff "^23.2.0" jest-get-type "^22.1.0" - jest-matcher-utils "^23.0.1" - jest-message-util "^23.0.0" - jest-regex-util "^23.0.0" + jest-matcher-utils "^23.2.0" + jest-message-util "^23.3.0" + jest-regex-util "^23.3.0" express@~4.13.1: version "4.13.4" @@ -2383,7 +2383,7 @@ fsevents@^1.2.3: nan "^2.9.2" node-pre-gyp "^0.10.0" -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2603,10 +2603,10 @@ has-values@^1.0.0: kind-of "^4.0.0" has@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" dependencies: - function-bind "^1.0.2" + function-bind "^1.1.1" hash-base@^3.0.0: version "3.0.4" @@ -2631,15 +2631,6 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" - hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -2664,8 +2655,8 @@ home-or-tmp@^2.0.0: os-tmpdir "^1.0.1" hosted-git-info@^2.1.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" html-comment-regex@^1.1.0: version "1.1.1" @@ -2888,8 +2879,8 @@ is-builtin-module@^1.0.0: builtin-modules "^1.0.0" is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" is-ci@^1.0.10, is-ci@^1.1.0: version "1.1.0" @@ -3046,12 +3037,6 @@ is-observable@^0.2.0: dependencies: symbol-observable "^0.2.2" -is-odd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" - dependencies: - is-number "^4.0.0" - is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" @@ -3174,8 +3159,8 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" istanbul-api@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.2.tgz#b2cfe6d15ae6a28ee282e7a823b8e9faa235e6cf" + version "1.3.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954" dependencies: async "^2.1.4" compare-versions "^3.1.0" @@ -3185,7 +3170,7 @@ istanbul-api@^1.3.1: istanbul-lib-instrument "^1.10.1" istanbul-lib-report "^1.1.4" istanbul-lib-source-maps "^1.2.4" - istanbul-reports "^1.4.0" + istanbul-reports "^1.3.0" js-yaml "^3.7.0" mkdirp "^0.5.1" once "^1.4.0" @@ -3195,10 +3180,10 @@ istanbul-lib-coverage@^1.2.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" istanbul-lib-hook@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz#ae556fd5a41a6e8efa0b1002b1e416dfeaf9816c" + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805" dependencies: - append-transform "^0.4.0" + append-transform "^1.0.0" istanbul-lib-instrument@^1.10.1: version "1.10.1" @@ -3222,8 +3207,8 @@ istanbul-lib-report@^1.1.4: supports-color "^3.1.2" istanbul-lib-source-maps@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7" + version "1.2.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1" dependencies: debug "^3.1.0" istanbul-lib-coverage "^1.2.0" @@ -3231,9 +3216,9 @@ istanbul-lib-source-maps@^1.2.4: rimraf "^2.6.1" source-map "^0.5.3" -istanbul-reports@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.4.0.tgz#3d7b44b912ecbe7652a603662b962120739646a1" +istanbul-reports@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554" dependencies: handlebars "^4.0.3" @@ -3277,15 +3262,15 @@ jade@^1.11.0: void-elements "~2.0.1" with "~4.0.0" -jest-changed-files@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.0.1.tgz#f79572d0720844ea5df84c2a448e862c2254f60c" +jest-changed-files@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.2.0.tgz#a145a6e4b66d0129fc7c99cee134dc937a643d9c" dependencies: throat "^4.0.0" -jest-cli@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.0.1.tgz#351a5ba51cf28ecf20336d97a30b970d1f530a56" +jest-cli@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.3.0.tgz#307e9be7733443b789a8279d694054d051a9e5e2" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -3298,22 +3283,24 @@ jest-cli@^23.0.1: istanbul-lib-coverage "^1.2.0" istanbul-lib-instrument "^1.10.1" istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.0.1" - jest-config "^23.0.1" - jest-environment-jsdom "^23.0.1" + jest-changed-files "^23.2.0" + jest-config "^23.3.0" + jest-environment-jsdom "^23.3.0" jest-get-type "^22.1.0" - jest-haste-map "^23.0.1" - jest-message-util "^23.0.0" - jest-regex-util "^23.0.0" - jest-resolve-dependencies "^23.0.1" - jest-runner "^23.0.1" - jest-runtime "^23.0.1" - jest-snapshot "^23.0.1" - jest-util "^23.0.1" - jest-validate "^23.0.1" - jest-worker "^23.0.1" - micromatch "^2.3.11" + jest-haste-map "^23.2.0" + jest-message-util "^23.3.0" + jest-regex-util "^23.3.0" + jest-resolve-dependencies "^23.3.0" + jest-runner "^23.3.0" + jest-runtime "^23.3.0" + jest-snapshot "^23.3.0" + jest-util "^23.3.0" + jest-validate "^23.3.0" + jest-watcher "^23.2.0" + jest-worker "^23.2.0" + micromatch "^3.1.10" node-notifier "^5.2.1" + prompts "^0.1.9" realpath-native "^1.0.0" rimraf "^2.5.4" slash "^1.0.0" @@ -3338,23 +3325,23 @@ jest-config@^22.4.3: jest-validate "^22.4.3" pretty-format "^22.4.3" -jest-config@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.0.1.tgz#6798bff1247c7a390b1327193305001582fc58fa" +jest-config@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.3.0.tgz#bb4d53b70f9500fafddf718d226abb53b13b8323" dependencies: babel-core "^6.0.0" - babel-jest "^23.0.1" + babel-jest "^23.2.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^23.0.1" - jest-environment-node "^23.0.1" + jest-environment-jsdom "^23.3.0" + jest-environment-node "^23.3.0" jest-get-type "^22.1.0" - jest-jasmine2 "^23.0.1" - jest-regex-util "^23.0.0" - jest-resolve "^23.0.1" - jest-util "^23.0.1" - jest-validate "^23.0.1" - pretty-format "^23.0.1" + jest-jasmine2 "^23.3.0" + jest-regex-util "^23.3.0" + jest-resolve "^23.2.0" + jest-util "^23.3.0" + jest-validate "^23.3.0" + pretty-format "^23.2.0" jest-diff@^22.4.3: version "22.4.3" @@ -3365,31 +3352,31 @@ jest-diff@^22.4.3: jest-get-type "^22.4.3" pretty-format "^22.4.3" -jest-diff@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.0.1.tgz#3d49137cee12c320a4b4d2b4a6fa6e82d491a16a" +jest-diff@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.2.0.tgz#9f2cf4b51e12c791550200abc16b47130af1062a" dependencies: chalk "^2.0.1" diff "^3.2.0" jest-get-type "^22.1.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" -jest-docblock@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.0.1.tgz#deddd18333be5dc2415260a04ef3fce9276b5725" +jest-docblock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" dependencies: detect-newline "^2.1.0" -jest-each@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.0.1.tgz#a6e5dbf530afc6bf9d74792dde69d8db70f84706" +jest-each@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.2.0.tgz#a400f81c857083f50c4f53399b109f12023fb19d" dependencies: chalk "^2.0.1" - pretty-format "^23.0.1" + pretty-format "^23.2.0" jest-environment-jsdom@^22.4.3: version "22.4.3" @@ -3399,12 +3386,12 @@ jest-environment-jsdom@^22.4.3: jest-util "^22.4.3" jsdom "^11.5.1" -jest-environment-jsdom@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.0.1.tgz#da689eb9358dc16e5708abb208f4eb26a439575c" +jest-environment-jsdom@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.3.0.tgz#190457f91c9e615454c4186056065db6ed7a4e2a" dependencies: - jest-mock "^23.0.1" - jest-util "^23.0.1" + jest-mock "^23.2.0" + jest-util "^23.3.0" jsdom "^11.5.1" jest-environment-node@^22.4.3: @@ -3414,27 +3401,27 @@ jest-environment-node@^22.4.3: jest-mock "^22.4.3" jest-util "^22.4.3" -jest-environment-node@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.0.1.tgz#676b740e205f1f2be77241969e7812be824ee795" +jest-environment-node@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.3.0.tgz#1e8df21c847aa5d03b76573f0dc16fcde5034c32" dependencies: - jest-mock "^23.0.1" - jest-util "^23.0.1" + jest-mock "^23.2.0" + jest-util "^23.3.0" jest-get-type@^22.1.0, jest-get-type@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" -jest-haste-map@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.0.1.tgz#cd89052abfc8cba01f560bbec09d4f36aec25d4f" +jest-haste-map@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.2.0.tgz#d10cbac007c695948c8ef1821a2b2ed2d4f2d4d8" dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.11" - jest-docblock "^23.0.1" + jest-docblock "^23.2.0" jest-serializer "^23.0.1" - jest-worker "^23.0.1" - micromatch "^2.3.11" + jest-worker "^23.2.0" + micromatch "^3.1.10" sane "^2.0.0" jest-jasmine2@^22.4.3: @@ -3453,27 +3440,27 @@ jest-jasmine2@^22.4.3: jest-util "^22.4.3" source-map-support "^0.5.0" -jest-jasmine2@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.0.1.tgz#16d875356e6360872bba48426f7d31fdc1b0bcea" +jest-jasmine2@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.3.0.tgz#a8706baac23c8a130d5aa8ef5464a9d49096d1b5" dependencies: chalk "^2.0.1" co "^4.6.0" - expect "^23.0.1" + expect "^23.3.0" is-generator-fn "^1.0.0" - jest-diff "^23.0.1" - jest-each "^23.0.1" - jest-matcher-utils "^23.0.1" - jest-message-util "^23.0.0" - jest-snapshot "^23.0.1" - jest-util "^23.0.1" - pretty-format "^23.0.1" + jest-diff "^23.2.0" + jest-each "^23.2.0" + jest-matcher-utils "^23.2.0" + jest-message-util "^23.3.0" + jest-snapshot "^23.3.0" + jest-util "^23.3.0" + pretty-format "^23.2.0" -jest-leak-detector@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.0.1.tgz#9dba07505ac3495c39d3ec09ac1e564599e861a0" +jest-leak-detector@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.2.0.tgz#c289d961dc638f14357d4ef96e0431ecc1aa377d" dependencies: - pretty-format "^23.0.1" + pretty-format "^23.2.0" jest-matcher-utils@^22.4.3: version "22.4.3" @@ -3483,13 +3470,13 @@ jest-matcher-utils@^22.4.3: jest-get-type "^22.4.3" pretty-format "^22.4.3" -jest-matcher-utils@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.0.1.tgz#0c6c0daedf9833c2a7f36236069efecb4c3f6e5f" +jest-matcher-utils@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.2.0.tgz#4d4981f23213e939e3cedf23dc34c747b5ae1913" dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" jest-message-util@^22.4.3: version "22.4.3" @@ -3501,13 +3488,13 @@ jest-message-util@^22.4.3: slash "^1.0.0" stack-utils "^1.0.1" -jest-message-util@^23.0.0: - version "23.0.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.0.0.tgz#073f3d76c701f7c718a4b9af1eb7f138792c4796" +jest-message-util@^23.0.0, jest-message-util@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.3.0.tgz#bc07b11cec6971fb5dd9de2dfb60ebc22150c160" dependencies: "@babel/code-frame" "^7.0.0-beta.35" chalk "^2.0.1" - micromatch "^2.3.11" + micromatch "^3.1.10" slash "^1.0.0" stack-utils "^1.0.1" @@ -3515,24 +3502,24 @@ jest-mock@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" -jest-mock@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.0.1.tgz#1569f477968c668fc728273a17c3767773b46357" +jest-mock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" jest-regex-util@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" -jest-regex-util@^23.0.0: - version "23.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.0.0.tgz#dd5c1fde0c46f4371314cf10f7a751a23f4e8f76" +jest-regex-util@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" -jest-resolve-dependencies@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.0.1.tgz#d01a10ddad9152c4cecdf5eac2b88571c4b6a64d" +jest-resolve-dependencies@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.3.0.tgz#8444d3b0b1288b80864d8801ff50b44a4d695d1d" dependencies: - jest-regex-util "^23.0.0" - jest-snapshot "^23.0.1" + jest-regex-util "^23.3.0" + jest-snapshot "^23.3.0" jest-resolve@^22.4.3: version "22.4.3" @@ -3541,35 +3528,35 @@ jest-resolve@^22.4.3: browser-resolve "^1.11.2" chalk "^2.0.1" -jest-resolve@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.0.1.tgz#3f8403462b10a34c2df1d47aab5574c4935bcd24" +jest-resolve@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.2.0.tgz#a0790ad5a3b99002ab4dbfcbf8d9e2d6a69b3d99" dependencies: - browser-resolve "^1.11.2" + browser-resolve "^1.11.3" chalk "^2.0.1" realpath-native "^1.0.0" -jest-runner@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.0.1.tgz#b176ae3ecf9e194aa4b84a7fcf70d1b8db231aa7" +jest-runner@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.3.0.tgz#04c7e458a617501a4875db0d7ffbe0e3cbd43bfb" dependencies: exit "^0.1.2" graceful-fs "^4.1.11" - jest-config "^23.0.1" - jest-docblock "^23.0.1" - jest-haste-map "^23.0.1" - jest-jasmine2 "^23.0.1" - jest-leak-detector "^23.0.1" - jest-message-util "^23.0.0" - jest-runtime "^23.0.1" - jest-util "^23.0.1" - jest-worker "^23.0.1" + jest-config "^23.3.0" + jest-docblock "^23.2.0" + jest-haste-map "^23.2.0" + jest-jasmine2 "^23.3.0" + jest-leak-detector "^23.2.0" + jest-message-util "^23.3.0" + jest-runtime "^23.3.0" + jest-util "^23.3.0" + jest-worker "^23.2.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.0.1.tgz#b1d765fb03fb6d4043805af270676a693f504d57" +jest-runtime@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.3.0.tgz#4865aab4ceff82f9cec6335fd7ae1422cc1de7df" dependencies: babel-core "^6.0.0" babel-plugin-istanbul "^4.1.6" @@ -3578,15 +3565,15 @@ jest-runtime@^23.0.1: exit "^0.1.2" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.1.11" - jest-config "^23.0.1" - jest-haste-map "^23.0.1" - jest-message-util "^23.0.0" - jest-regex-util "^23.0.0" - jest-resolve "^23.0.1" - jest-snapshot "^23.0.1" - jest-util "^23.0.1" - jest-validate "^23.0.1" - micromatch "^2.3.11" + jest-config "^23.3.0" + jest-haste-map "^23.2.0" + jest-message-util "^23.3.0" + jest-regex-util "^23.3.0" + jest-resolve "^23.2.0" + jest-snapshot "^23.3.0" + jest-util "^23.3.0" + jest-validate "^23.3.0" + micromatch "^3.1.10" realpath-native "^1.0.0" slash "^1.0.0" strip-bom "3.0.0" @@ -3615,16 +3602,21 @@ jest-snapshot@^22.4.3: natural-compare "^1.4.0" pretty-format "^22.4.3" -jest-snapshot@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.0.1.tgz#6674fa19b9eb69a99cabecd415bddc42d6af3e7e" +jest-snapshot@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.3.0.tgz#fc4e9f81e45432d10507e27f50bce60f44d81424" dependencies: + babel-traverse "^6.0.0" + babel-types "^6.0.0" chalk "^2.0.1" - jest-diff "^23.0.1" - jest-matcher-utils "^23.0.1" + jest-diff "^23.2.0" + jest-matcher-utils "^23.2.0" + jest-message-util "^23.3.0" + jest-resolve "^23.2.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" + semver "^5.5.0" jest-util@^22.4.3: version "22.4.3" @@ -3638,7 +3630,7 @@ jest-util@^22.4.3: mkdirp "^0.5.1" source-map "^0.6.0" -jest-util@^23.0.0, jest-util@^23.0.1: +jest-util@^23.0.0: version "23.0.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.0.1.tgz#68ea5bd7edb177d3059f9797259f8e0dacce2f99" dependencies: @@ -3650,6 +3642,19 @@ jest-util@^23.0.0, jest-util@^23.0.1: mkdirp "^0.5.1" source-map "^0.6.0" +jest-util@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.3.0.tgz#79f35bb0c30100ef611d963ee6b88f8ed873a81d" + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + jest-message-util "^23.3.0" + mkdirp "^0.5.1" + slash "^1.0.0" + source-map "^0.6.0" + jest-validate@^22.4.0, jest-validate@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.3.tgz#0780954a5a7daaeec8d3c10834b9280865976b30" @@ -3660,27 +3665,35 @@ jest-validate@^22.4.0, jest-validate@^22.4.3: leven "^2.1.0" pretty-format "^22.4.3" -jest-validate@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.0.1.tgz#cd9f01a89d26bb885f12a8667715e9c865a5754f" +jest-validate@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.3.0.tgz#d49bea6aad98c30acd2cbb542434798a0cc13f76" dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" leven "^2.1.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" -jest-worker@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.0.1.tgz#9e649dd963ff4046026f91c4017f039a6aa4a7bc" +jest-watcher@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.2.0.tgz#678e852896e919e9d9a0eb4b8baf1ae279620ea9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + string-length "^2.0.0" + +jest-worker@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" dependencies: merge-stream "^1.0.1" -jest@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-23.0.1.tgz#0d083290ee4112cecfb780df6ff81332ed373201" +jest@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-23.3.0.tgz#1355cd792f38cf20fba4da02dddb7ca14d9484b5" dependencies: import-local "^1.0.0" - jest-cli "^23.0.1" + jest-cli "^23.3.0" joi@^12.x: version "12.0.0" @@ -3709,13 +3722,20 @@ js-yaml@3.6.1: argparse "^1.0.7" esprima "^2.6.0" -js-yaml@3.x, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@3.x, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.7.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" @@ -3728,21 +3748,21 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jsdom@^11.5.1: - version "11.10.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.10.0.tgz#a42cd54e88895dc765f03f15b807a474962ac3b5" + version "11.11.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.11.0.tgz#df486efad41aee96c59ad7a190e2449c7eb1110e" dependencies: abab "^1.0.4" acorn "^5.3.0" acorn-globals "^4.1.0" array-equal "^1.0.0" cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" + cssstyle ">= 0.3.1 < 0.4.0" data-urls "^1.0.0" domexception "^1.0.0" escodegen "^1.9.0" html-encoding-sniffer "^1.0.2" left-pad "^1.2.0" - nwmatcher "^1.4.3" + nwsapi "^2.0.0" parse5 "4.0.0" pn "^1.1.0" request "^2.83.0" @@ -3754,7 +3774,7 @@ jsdom@^11.5.1: webidl-conversions "^4.0.2" whatwg-encoding "^1.0.3" whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.0" + whatwg-url "^6.4.1" ws "^4.0.0" xml-name-validator "^3.0.0" @@ -4044,7 +4064,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -4172,7 +4192,7 @@ merge-stream@^1.0.1: dependencies: readable-stream "^2.0.1" -merge@^1.1.3: +merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" @@ -4180,7 +4200,7 @@ methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^2.3.11: +micromatch@^2.3.11, micromatch@^3.1.10: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -4271,11 +4291,11 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -minipass@^2.2.1, minipass@^2.2.4: - version "2.3.1" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.1.tgz#4e872b959131a672837ab3cb554962bc84b1537d" +minipass@^2.2.1, minipass@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" dependencies: - safe-buffer "^5.1.1" + safe-buffer "^5.1.2" yallist "^3.0.0" minizlib@^1.1.0: @@ -4340,15 +4360,14 @@ nan@^2.9.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" nanomatch@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" define-property "^2.0.2" extend-shallow "^3.0.2" fragment-cache "^0.2.1" - is-odd "^2.0.0" is-windows "^1.0.2" kind-of "^6.0.2" object.pick "^1.3.0" @@ -4360,7 +4379,7 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" -needle@^2.2.0: +needle@^2.2.0, needle@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" dependencies: @@ -4425,16 +4444,16 @@ node-notifier@^5.2.1: which "^1.3.0" node-pre-gyp@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" - needle "^2.2.0" + needle "^2.2.1" nopt "^4.0.1" npm-packlist "^1.1.6" npmlog "^4.0.2" - rc "^1.1.7" + rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" tar "^4" @@ -4543,9 +4562,9 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -nwmatcher@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" +nwsapi@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.4.tgz#dc79040a5f77b97716dc79565fc7fc3ef7d50570" oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" @@ -4564,8 +4583,8 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + version "1.0.12" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" object-visit@^1.0.0: version "1.0.1" @@ -5140,9 +5159,9 @@ pretty-format@^22.4.3: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.0.1.tgz#d61d065268e4c759083bccbca27a01ad7c7601f4" +pretty-format@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.2.0.tgz#3b0aaa63c018a53583373c1cb3a5d96cc5e83017" dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -5185,6 +5204,13 @@ promise@~2.0: dependencies: is-promise "~1" +prompts@^0.1.9: + version "0.1.11" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.11.tgz#fdfac72f61d2887f4eaf2e65e748a9d9ef87206f" + dependencies: + clorox "^1.0.3" + sisteransi "^0.1.1" + prop-types@^15.5.10: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" @@ -5208,6 +5234,10 @@ pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +psl@^1.1.24: + version "1.1.28" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.28.tgz#4fb6ceb08a1e2214d4fd4de0ca22dae13740bc7b" + public-encrypt@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" @@ -5338,7 +5368,7 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@2.x.x, punycode@^2.1.0: +punycode@2.x.x: version "2.1.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" @@ -5346,6 +5376,10 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + pupa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pupa/-/pupa-1.0.0.tgz#9a9568a5af7e657b8462a6e9d5328743560ceff6" @@ -5418,11 +5452,11 @@ raw-loader@~0.5.0, raw-loader@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" -rc@^1.1.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.7.tgz#8a10ca30d588d00464360372b890d06dacd02297" +rc@^1.1.7, rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" dependencies: - deep-extend "^0.5.1" + deep-extend "^0.6.0" ini "~1.3.0" minimist "^1.2.0" strip-json-comments "~2.0.1" @@ -5491,8 +5525,8 @@ readdirp@^2.0.0: set-immediate-shim "^1.0.1" realpath-native@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0" + version "1.0.1" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.1.tgz#07f40a0cce8f8261e2e8b7ebebf5c95965d7b633" dependencies: util.promisify "^1.0.0" @@ -5647,8 +5681,8 @@ request@2.81.0: uuid "^3.0.0" request@^2.83.0: - version "2.86.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.86.0.tgz#2b9497f449b0a32654c081a5cf426bbfb5bf5b69" + version "2.87.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" dependencies: aws-sign2 "~0.7.0" aws4 "^1.6.0" @@ -5658,7 +5692,6 @@ request@^2.83.0: forever-agent "~0.6.1" form-data "~2.3.1" har-validator "~5.0.3" - hawk "~6.0.2" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -5802,7 +5835,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -5848,7 +5881,7 @@ semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" @@ -5959,6 +5992,10 @@ simple-git@^1.65.0: dependencies: debug "^3.1.0" +sisteransi@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -6010,12 +6047,6 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -sntp@2.x.x: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" - dependencies: - hoek "4.x.x" - sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -6112,13 +6143,14 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" sshpk@^1.7.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" + version "1.14.2" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" dashdash "^1.12.0" getpass "^0.1.1" + safer-buffer "^2.0.2" optionalDependencies: bcrypt-pbkdf "^1.0.0" ecc-jsbn "~0.1.1" @@ -6207,7 +6239,7 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" dependencies: @@ -6215,7 +6247,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: @@ -6339,12 +6371,12 @@ tapable@^1.0.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" tar@^4: - version "4.4.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.2.tgz#60685211ba46b38847b1ae7ee1a24d744a2cd462" + version "4.4.4" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" dependencies: chownr "^1.0.1" fs-minipass "^1.2.5" - minipass "^2.2.4" + minipass "^2.3.3" minizlib "^1.1.0" mkdirp "^0.5.0" safe-buffer "^5.1.2" @@ -6439,7 +6471,14 @@ topo@2.x.x: dependencies: hoek "4.x.x" -tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: @@ -6652,10 +6691,14 @@ utils-merge@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" -uuid@^3.0.0, uuid@^3.1.0: +uuid@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" +uuid@^3.1.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + val-loader@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/val-loader/-/val-loader-1.1.0.tgz#ed91537424d62a4ded98e846ccf07367756bf506" @@ -6767,9 +6810,9 @@ whatwg-mimetype@^2.0.0, whatwg-mimetype@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz#f0f21d76cbba72362eb609dbed2a30cd17fcc7d4" -whatwg-url@^6.4.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.1.tgz#fdb94b440fd4ad836202c16e9737d511f012fd67" +whatwg-url@^6.4.0, whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -6783,17 +6826,23 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.1.1, which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0: +which@^1.1.1, which@^1.2.10: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: isexe "^2.0.0" +which@^1.2.12, which@^1.2.9, which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" dependencies: - string-width "^1.0.2" + string-width "^1.0.2 || 2" window-size@0.1.0: version "0.1.0" From 8876514cdba5961094c6bfcf25829253a9b9f831 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 10 Jul 2018 12:09:14 +0200 Subject: [PATCH 31/41] replace deprecated method --- lib/Compilation.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Compilation.js b/lib/Compilation.js index 659dcfae7f3..ec97accdd90 100644 --- a/lib/Compilation.js +++ b/lib/Compilation.js @@ -26,7 +26,6 @@ const ChunkTemplate = require("./ChunkTemplate"); const HotUpdateChunkTemplate = require("./HotUpdateChunkTemplate"); const ModuleTemplate = require("./ModuleTemplate"); const RuntimeTemplate = require("./RuntimeTemplate"); -const Dependency = require("./Dependency"); const ChunkRenderError = require("./ChunkRenderError"); const AsyncDependencyToInitialChunkError = require("./AsyncDependencyToInitialChunkError"); const Stats = require("./Stats"); @@ -36,6 +35,7 @@ const Queue = require("./util/Queue"); const SortableSet = require("./util/SortableSet"); const GraphHelpers = require("./GraphHelpers"); const ModuleDependency = require("./dependencies/ModuleDependency"); +const compareLocations = require("./compareLocations"); /** @typedef {import("./Module")} Module */ /** @typedef {import("./Compiler")} Compiler */ @@ -642,7 +642,7 @@ class Compilation extends Tapable { war.dependencies = dependencies; this.warnings.push(war); } - module.dependencies.sort(Dependency.compare); + module.dependencies.sort((a, b) => compareLocations(a.loc, b.loc)); if (error) { this.hooks.failedModule.call(module, error); return callback(error); From f0cd45102c76a66c79a1e72149fd29a23a60ad4b Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 10 Jul 2018 17:03:53 +0200 Subject: [PATCH 32/41] do not instrument node_modules --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 3649114fdd7..9af9a8c7347 100644 --- a/package.json +++ b/package.json @@ -187,7 +187,8 @@ "coveragePathIgnorePatterns": [ "\\.runtime\\.js$", "/test/", - "/schemas/" + "/schemas/", + "/node_modules/" ], "testEnvironment": "node", "coverageReporters": [ From b93225a6a120a4155c118a0c1a5f4b0823863c41 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 10 Jul 2018 17:18:45 +0200 Subject: [PATCH 33/41] add types and fix incorrect loc type fix formatLocation for types --- lib/Dependency.js | 6 +- lib/SingleEntryPlugin.js | 7 ++- lib/dependencies/LoaderPlugin.js | 19 ++++++- lib/formatLocation.js | 96 ++++++++++++++++++-------------- 4 files changed, 82 insertions(+), 46 deletions(-) diff --git a/lib/Dependency.js b/lib/Dependency.js index 4b731a7323c..6d27b1ed6d2 100644 --- a/lib/Dependency.js +++ b/lib/Dependency.js @@ -18,19 +18,19 @@ const DependencyReference = require("./dependencies/DependencyReference"); */ /** @typedef {Object} SourcePosition - * @property {number} column * @property {number} line + * @property {number=} column */ /** @typedef {Object} RealDependencyLocation * @property {SourcePosition} start - * @property {SourcePosition} end + * @property {SourcePosition=} end * @property {number=} index */ /** @typedef {Object} SynteticDependencyLocation * @property {string} name - * @property {number} index + * @property {number=} index */ /** @typedef {SynteticDependencyLocation|RealDependencyLocation} DependencyLocation */ diff --git a/lib/SingleEntryPlugin.js b/lib/SingleEntryPlugin.js index e049abc2ac8..4a1703b1f85 100644 --- a/lib/SingleEntryPlugin.js +++ b/lib/SingleEntryPlugin.js @@ -48,9 +48,14 @@ class SingleEntryPlugin { ); } + /** + * @param {string} entry entry request + * @param {string} name entry name + * @returns {SingleEntryDependency} the dependency + */ static createDependency(entry, name) { const dep = new SingleEntryDependency(entry); - dep.loc = name; + dep.loc = { name }; return dep; } } diff --git a/lib/dependencies/LoaderPlugin.js b/lib/dependencies/LoaderPlugin.js index a3ab3f14104..c781d063605 100644 --- a/lib/dependencies/LoaderPlugin.js +++ b/lib/dependencies/LoaderPlugin.js @@ -7,6 +7,16 @@ const LoaderDependency = require("./LoaderDependency"); const NormalModule = require("../NormalModule"); +/** @typedef {import("../Module")} Module */ + +/** + * @callback LoadModuleCallback + * @param {Error=} err error object + * @param {string=} source source code + * @param {object=} map source map + * @param {Module=} module loaded module if successful + */ + class LoaderPlugin { apply(compiler) { compiler.hooks.compilation.tap( @@ -23,9 +33,16 @@ class LoaderPlugin { compilation.hooks.normalModuleLoader.tap( "LoaderPlugin", (loaderContext, module) => { + /** + * @param {string} request the request string to load the module from + * @param {LoadModuleCallback} callback callback returning the loaded module or error + * @returns {void} + */ loaderContext.loadModule = (request, callback) => { const dep = new LoaderDependency(request); - dep.loc = request; + dep.loc = { + name: request + }; const factory = compilation.dependencyFactories.get( dep.constructor ); diff --git a/lib/formatLocation.js b/lib/formatLocation.js index 8bd574d0102..f608cd496dc 100644 --- a/lib/formatLocation.js +++ b/lib/formatLocation.js @@ -5,57 +5,71 @@ "use strict"; +/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */ +/** @typedef {import("./Dependency").SourcePosition} SourcePosition */ + +// TODO webpack 5: pos must be SourcePosition +/** + * @param {SourcePosition|DependencyLocation|string} pos position + * @returns {string} formatted position + */ const formatPosition = pos => { if (pos === null) return ""; - const typeOfPos = typeof pos; - switch (typeOfPos) { - case "string": - return pos; - case "number": - return `${pos}`; - case "object": - if (typeof pos.line === "number" && typeof pos.column === "number") { - return `${pos.line}:${pos.column}`; - } else if (typeof pos.line === "number") { - return `${pos.line}:?`; - } else if (typeof pos.index === "number") { - return `+${pos.index}`; - } else { - return ""; - } - default: + // TODO webpack 5: Simplify this + if (typeof pos === "string") return pos; + if (typeof pos === "number") return `${pos}`; + if (typeof pos === "object") { + if ("line" in pos && "column" in pos) { + return `${pos.line}:${pos.column}`; + } else if ("line" in pos) { + return `${pos.line}:?`; + } else if ("index" in pos) { + // TODO webpack 5 remove this case + return `+${pos.index}`; + } else { return ""; + } } + return ""; }; +// TODO webpack 5: loc must be DependencyLocation +/** + * @param {DependencyLocation|SourcePosition|string} loc location + * @returns {string} formatted location + */ const formatLocation = loc => { if (loc === null) return ""; - const typeOfLoc = typeof loc; - switch (typeOfLoc) { - case "string": - return loc; - case "number": - return `${loc}`; - case "object": - if (loc.start && loc.end) { - if ( - typeof loc.start.line === "number" && - typeof loc.end.line === "number" && - typeof loc.end.column === "number" && - loc.start.line === loc.end.line - ) { - return `${formatPosition(loc.start)}-${loc.end.column}`; - } else { - return `${formatPosition(loc.start)}-${formatPosition(loc.end)}`; - } - } - if (loc.start) { - return formatPosition(loc.start); + // TODO webpack 5: Simplify this + if (typeof loc === "string") return loc; + if (typeof loc === "number") return `${loc}`; + if (typeof loc === "object") { + if ("start" in loc && loc.start && "end" in loc && loc.end) { + if ( + typeof loc.start === "object" && + typeof loc.start.line === "number" && + typeof loc.end === "object" && + typeof loc.end.line === "number" && + typeof loc.end.column === "number" && + loc.start.line === loc.end.line + ) { + return `${formatPosition(loc.start)}-${loc.end.column}`; + } else { + return `${formatPosition(loc.start)}-${formatPosition(loc.end)}`; } - return formatPosition(loc); - default: - return ""; + } + if ("start" in loc && loc.start) { + return formatPosition(loc.start); + } + if ("name" in loc && "index" in loc) { + return `${loc.name}[${loc.index}]`; + } + if ("name" in loc) { + return loc.name; + } + return formatPosition(loc); } + return ""; }; module.exports = formatLocation; From 18d33c630f799e99e5e43fc0b6931713dc976529 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Wed, 11 Jul 2018 10:45:52 +0200 Subject: [PATCH 34/41] 4.16.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9af9a8c7347..4f614244399 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "webpack", - "version": "4.15.1", + "version": "4.16.0", "author": "Tobias Koppers @sokra", "description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.", "license": "MIT", From 9d7764aec5d476d49601f4e07be34e9f4930bad1 Mon Sep 17 00:00:00 2001 From: Sebastian Werner Date: Thu, 12 Jul 2018 12:40:08 +0200 Subject: [PATCH 35/41] Relaxed type check for hashDigest to allow other non NodeJS-native digest methods e.g. base62. --- schemas/WebpackOptions.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/schemas/WebpackOptions.json b/schemas/WebpackOptions.json index 7e6648ab667..63b96b9ab87 100644 --- a/schemas/WebpackOptions.json +++ b/schemas/WebpackOptions.json @@ -410,11 +410,7 @@ }, "hashDigest": { "description": "Digest type used for the hash", - "enum": [ - "latin1", - "hex", - "base64" - ] + "type": "string" }, "hashDigestLength": { "description": "Number of chars which are used for the hash", From 5e80a92b4609b82ee23dbd840271e638750d7e4b Mon Sep 17 00:00:00 2001 From: Mohsen Azimi Date: Thu, 12 Jul 2018 18:09:50 -0700 Subject: [PATCH 36/41] Upgrade to TypeScript 3.0 (RC) --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 4f614244399..2120e5e4ec4 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "script-loader": "~0.7.0", "simple-git": "^1.65.0", "style-loader": "^0.19.1", - "typescript": "^2.9.1", + "typescript": "^3.0.0-rc", "url-loader": "^0.6.2", "val-loader": "^1.0.2", "vm-browserify": "~0.0.0", diff --git a/yarn.lock b/yarn.lock index 739f52895d2..40ab5125d53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6541,9 +6541,9 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@^2.9.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" +typescript@^3.0.0-rc: + version "3.0.0-rc" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.0-rc.tgz#13553808426d393d3f92c054f4fa6f24589549c1" ua-parser-js@^0.7.9: version "0.7.18" From 8fcecf38b040d03f779f4d4d7757bc2eddc4d82d Mon Sep 17 00:00:00 2001 From: Ed Morley <501702+edmorley@users.noreply.github.com> Date: Fri, 13 Jul 2018 13:27:39 +0100 Subject: [PATCH 37/41] Correct moduleIds schema description Fixes the typo in #7686. --- schemas/WebpackOptions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schemas/WebpackOptions.json b/schemas/WebpackOptions.json index 63b96b9ab87..bc2c3ff5879 100644 --- a/schemas/WebpackOptions.json +++ b/schemas/WebpackOptions.json @@ -1592,7 +1592,7 @@ "type": "boolean" }, "moduleIds": { - "description": "Define the algorithm to choose module ids (natural: numeric ids in order for usage, named: readable ids for better debugging, hashed: short hashes as ids for better long term caching, size: numeric ids focused on minimal initial download size, total-size: numeric ids focused on minimal total download size, false: no algorithm used, as custom one can be provided via plugin)", + "description": "Define the algorithm to choose module ids (natural: numeric ids in order of usage, named: readable ids for better debugging, hashed: short hashes as ids for better long term caching, size: numeric ids focused on minimal initial download size, total-size: numeric ids focused on minimal total download size, false: no algorithm used, as custom one can be provided via plugin)", "enum": [ "natural", "named", From dc0e7ecc66a9f2492a9e3efa3cf077a462977dfd Mon Sep 17 00:00:00 2001 From: Josh Unger Date: Fri, 13 Jul 2018 07:23:07 -0600 Subject: [PATCH 38/41] Add mini-css-extract-plugin instead of extract-text-webpack-plugin I replaced extract-text-webpack-plugin with mini-css-extract-plugin since webpack v4 the extract-text-webpack-plugin should not be used for css. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3a3c583cf2b..f8dabebe47d 100644 --- a/README.md +++ b/README.md @@ -92,16 +92,16 @@ within webpack itself use this plugin interface. This makes webpack very |Name|Status|Install Size|Description| |:--:|:----:|:----------:|:----------| -|[extract-text-webpack-plugin][extract]|![extract-npm]|![extract-size]|Extracts Text (CSS) from your bundles into a separate file (app.bundle.css)| +|[mini-css-extract-plugin][mini-css]|![mini-css-npm]|![mini-css-size]|Extracts CSS into separate files. It creates a CSS file per JS file which contains CSS.| |[compression-webpack-plugin][compression]|![compression-npm]|![compression-size]|Prepares compressed versions of assets to serve them with Content-Encoding| |[i18n-webpack-plugin][i18n]|![i18n-npm]|![i18n-size]|Adds i18n support to your bundles| |[html-webpack-plugin][html-plugin]|![html-plugin-npm]|![html-plugin-size]| Simplifies creation of HTML files (`index.html`) to serve your bundles| [common-npm]: https://img.shields.io/npm/v/webpack.svg -[extract]: https://github.com/webpack/extract-text-webpack-plugin -[extract-npm]: https://img.shields.io/npm/v/extract-text-webpack-plugin.svg -[extract-size]: https://packagephobia.now.sh/badge?p=extract-text-webpack-plugin +[mini-css]: https://github.com/webpack-contrib/mini-css-extract-plugin +[mini-css-npm]: https://img.shields.io/npm/v/mini-css-extract-plugin.svg +[mini-css-size]: https://packagephobia.now.sh/badge?p=mini-css-extract-plugin [component]: https://github.com/webpack/component-webpack-plugin [component-npm]: https://img.shields.io/npm/v/component-webpack-plugin.svg [component-size]: https://packagephobia.now.sh/badge?p=component-webpack-plugin From 753dcce1885b3b61e8deb3a875687583d7ca7971 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 13 Jul 2018 15:37:06 +0200 Subject: [PATCH 39/41] fix order of occurrence order plugin remove enforced additional occurrence order plugin from test cases make test cases more independent of module/chunk order/ids --- lib/optimize/OccurrenceChunkOrderPlugin.js | 2 +- lib/optimize/OccurrenceModuleOrderPlugin.js | 2 +- lib/optimize/OccurrenceOrderPlugin.js | 4 +- test/Compiler.test.js | 6 +- test/HotModuleReplacementPlugin.test.js | 9 +- test/StatsTestCases.test.js | 1 - .../ConfigTestCases.test.js.snap | 20 +- .../__snapshots__/StatsTestCases.test.js.snap | 2322 ++++++++--------- .../order-multiple-entries/webpack.config.js | 8 +- .../code-generation/use-strict/index.js | 4 +- .../output-filename/test.config.js | 2 +- .../plugins/banner-plugin/index.js | 2 +- .../plugins/banner-plugin/webpack.config.js | 2 +- 13 files changed, 1195 insertions(+), 1189 deletions(-) diff --git a/lib/optimize/OccurrenceChunkOrderPlugin.js b/lib/optimize/OccurrenceChunkOrderPlugin.js index c7251c38d78..4730654fe67 100644 --- a/lib/optimize/OccurrenceChunkOrderPlugin.js +++ b/lib/optimize/OccurrenceChunkOrderPlugin.js @@ -49,7 +49,7 @@ class OccurrenceOrderChunkIdsPlugin { if (aOccurs < bOccurs) return 1; const orgA = originalOrder.get(a); const orgB = originalOrder.get(b); - return orgB - orgA; + return orgA - orgB; }); } ); diff --git a/lib/optimize/OccurrenceModuleOrderPlugin.js b/lib/optimize/OccurrenceModuleOrderPlugin.js index 8e6509dadf7..25561aea7e9 100644 --- a/lib/optimize/OccurrenceModuleOrderPlugin.js +++ b/lib/optimize/OccurrenceModuleOrderPlugin.js @@ -91,7 +91,7 @@ class OccurrenceOrderModuleIdsPlugin { if (aOccurs < bOccurs) return 1; const orgA = originalOrder.get(a); const orgB = originalOrder.get(b); - return orgB - orgA; + return orgA - orgB; }); } ); diff --git a/lib/optimize/OccurrenceOrderPlugin.js b/lib/optimize/OccurrenceOrderPlugin.js index 1590be90a4a..c73ec8e5750 100644 --- a/lib/optimize/OccurrenceOrderPlugin.js +++ b/lib/optimize/OccurrenceOrderPlugin.js @@ -91,7 +91,7 @@ class OccurrenceOrderPlugin { if (aOccurs < bOccurs) return 1; const orgA = originalOrder.get(a); const orgB = originalOrder.get(b); - return orgB - orgA; + return orgA - orgB; }); } ); @@ -124,7 +124,7 @@ class OccurrenceOrderPlugin { if (aOccurs < bOccurs) return 1; const orgA = originalOrder.get(a); const orgB = originalOrder.get(b); - return orgB - orgA; + return orgA - orgB; }); } ); diff --git a/test/Compiler.test.js b/test/Compiler.test.js index 0ce5d3ffabb..8f7d3a7c637 100644 --- a/test/Compiler.test.js +++ b/test/Compiler.test.js @@ -85,7 +85,7 @@ describe("Compiler", () => { expect(Object.keys(files)).toEqual(["/main.js"]); const bundle = files["/main.js"]; expect(bundle).toMatch("function __webpack_require__("); - expect(bundle).toMatch("__webpack_require__(/*! ./a */ 0);"); + expect(bundle).toMatch(/__webpack_require__\(\/\*! \.\/a \*\/ \d\);/); expect(bundle).toMatch("./c.js"); expect(bundle).toMatch("./a.js"); expect(bundle).toMatch("This is a"); @@ -145,9 +145,9 @@ describe("Compiler", () => { it("should compile a file with multiple chunks", done => { compile("./chunks", {}, (stats, files) => { expect(stats.chunks).toHaveLength(2); - expect(Object.keys(files)).toEqual(["/0.js", "/main.js"]); + expect(Object.keys(files)).toEqual(["/main.js", "/1.js"]); const bundle = files["/main.js"]; - const chunk = files["/0.js"]; + const chunk = files["/1.js"]; expect(bundle).toMatch("function __webpack_require__("); expect(bundle).toMatch("__webpack_require__(/*! ./b */"); expect(chunk).not.toMatch("__webpack_require__(/* ./b */"); diff --git a/test/HotModuleReplacementPlugin.test.js b/test/HotModuleReplacementPlugin.test.js index c86df04ed75..09a0578d12b 100644 --- a/test/HotModuleReplacementPlugin.test.js +++ b/test/HotModuleReplacementPlugin.test.js @@ -50,10 +50,11 @@ describe("HotModuleReplacementPlugin", () => { output: { path: path.join(__dirname, "js", "HotModuleReplacementPlugin") }, - plugins: [ - new webpack.HotModuleReplacementPlugin(), - new webpack.optimize.OccurrenceOrderPlugin() - ] + plugins: [new webpack.HotModuleReplacementPlugin()], + optimization: { + moduleIds: "size", + chunkIds: "size" + } }); fs.writeFileSync(entryFile, "1", "utf-8"); compiler.run((err, stats) => { diff --git a/test/StatsTestCases.test.js b/test/StatsTestCases.test.js index 0bc804ecdf6..f0ca3ae0e6e 100644 --- a/test/StatsTestCases.test.js +++ b/test/StatsTestCases.test.js @@ -75,7 +75,6 @@ describe("StatsTestCases", () => { ]) ); }; - new webpack.optimize.OccurrenceOrderPlugin().apply(c); }); c.run((err, stats) => { if (err) return done(err); diff --git a/test/__snapshots__/ConfigTestCases.test.js.snap b/test/__snapshots__/ConfigTestCases.test.js.snap index 0dab29d9c95..bf334e16f45 100644 --- a/test/__snapshots__/ConfigTestCases.test.js.snap +++ b/test/__snapshots__/ConfigTestCases.test.js.snap @@ -4,10 +4,10 @@ exports[`ConfigTestCases records issue-2991 exported tests should write relative "{ \\"modules\\": { \\"byIdentifier\\": { - \\"external \\\\\\"path\\\\\\"\\": 0, - \\"external \\\\\\"fs\\\\\\"\\": 1, - \\"ignored pkgs/somepackage/foo\\": 2, - \\"test.js\\": 3 + \\"test.js\\": 0, + \\"ignored pkgs/somepackage/foo\\": 1, + \\"external \\\\\\"fs\\\\\\"\\": 2, + \\"external \\\\\\"path\\\\\\"\\": 3 }, \\"usedIds\\": { \\"0\\": 0, @@ -32,12 +32,12 @@ exports[`ConfigTestCases records issue-7339 exported tests should write relative "{ \\"modules\\": { \\"byIdentifier\\": { - \\"dependencies/foo.js\\": 0, - \\"dependencies/bar.js\\": 1, - \\"external \\\\\\"path\\\\\\"\\": 2, - \\"external \\\\\\"fs\\\\\\"\\": 3, - \\"dependencies sync /^\\\\\\\\.\\\\\\\\/.*$/\\": 4, - \\"test.js\\": 5 + \\"dependencies/bar.js\\": 0, + \\"dependencies/foo.js\\": 1, + \\"test.js\\": 2, + \\"dependencies sync /^\\\\\\\\.\\\\\\\\/.*$/\\": 3, + \\"external \\\\\\"fs\\\\\\"\\": 4, + \\"external \\\\\\"path\\\\\\"\\": 5 }, \\"usedIds\\": { \\"0\\": 0, diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index 78afa6714a9..5a4e72f6998 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -57,89 +57,89 @@ Child content-change: `; exports[`StatsTestCases should print correct stats for aggressive-splitting-on-demand 1`] = ` -"Hash: 6fd6445da5532a699ea4 +"Hash: 22813fefc4dae997c5fe Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names -58f368c01f66002b0eb3.js 1.94 KiB 6, 7 [emitted] +a2fea791e74e99836233.js 1.94 KiB 6 [emitted] 2736cf9d79233cd0a9b6.js 1.93 KiB 0 [emitted] 7f83e5c2f4e52435dd2c.js 1.96 KiB 2 [emitted] 43c1ac24102c075ecb2d.js 1.94 KiB 3, 1 [emitted] -a35356222d6a2151f7d3.js 1.01 KiB 4 [emitted] -e5fb899955fa03a8053b.js 1.94 KiB 5 [emitted] +db744382311550539cad.js 9.7 KiB 4 [emitted] main +6a80fd33f274d3117a32.js 1.01 KiB 5 [emitted] 29de52df747b400f6177.js 1 KiB 1 [emitted] -6a8e74d82c35e3f013d2.js 1 KiB 7 [emitted] +a9463ba36646aa40b97c.js 1.94 KiB 7, 9 [emitted] 5bc7f208cd99a83b4e33.js 1.94 KiB 8 [emitted] -13713792eb1b5038ab8b.js 1.94 KiB 9 [emitted] -d886db099ddf05aadc6d.js 9.7 KiB 10 [emitted] main +819c28704a84308cd0f6.js 1 KiB 9 [emitted] +5ea68201264e1d2b28e9.js 1.94 KiB 10 [emitted] ba9fedb7aa0c69201639.js 1.94 KiB 11 [emitted] -Entrypoint main = d886db099ddf05aadc6d.js -chunk {0} 2736cf9d79233cd0a9b6.js 1.76 KiB <{10}> ={1}= ={2}= ={3}= ={7}= ={9}= [recorded] aggressive splitted +Entrypoint main = db744382311550539cad.js +chunk {0} 2736cf9d79233cd0a9b6.js 1.76 KiB <{4}> ={1}= ={2}= ={3}= ={9}= ={10}= [recorded] aggressive splitted > ./b ./d ./e ./f ./g [11] ./index.js 5:0-44 > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 - [0] ./b.js 899 bytes {0} {5} [built] + [0] ./b.js 899 bytes {0} {6} [built] [1] ./d.js 899 bytes {0} {8} [built] -chunk {1} 29de52df747b400f6177.js 899 bytes <{10}> ={0}= ={2}= ={8}= +chunk {1} 29de52df747b400f6177.js 899 bytes <{4}> ={0}= ={2}= ={8}= > ./c ./d ./e [11] ./index.js 3:0-30 > ./b ./d ./e ./f ./g [11] ./index.js 5:0-44 [2] ./e.js 899 bytes {1} {3} [built] -chunk {2} 7f83e5c2f4e52435dd2c.js 1.76 KiB <{10}> ={0}= ={1}= ={3}= ={6}= ={7}= ={9}= ={11}= [recorded] aggressive splitted +chunk {2} 7f83e5c2f4e52435dd2c.js 1.76 KiB <{4}> ={0}= ={1}= ={3}= ={7}= ={9}= ={10}= ={11}= [recorded] aggressive splitted > ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51 > ./b ./d ./e ./f ./g [11] ./index.js 5:0-44 > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 [3] ./f.js 899 bytes {2} [built] [4] ./g.js 901 bytes {2} [built] -chunk {3} 43c1ac24102c075ecb2d.js 1.76 KiB <{10}> ={0}= ={2}= ={7}= ={9}= [rendered] [recorded] aggressive splitted +chunk {3} 43c1ac24102c075ecb2d.js 1.76 KiB <{4}> ={0}= ={2}= ={9}= ={10}= [rendered] [recorded] aggressive splitted > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 [2] ./e.js 899 bytes {1} {3} [built] [6] ./h.js 899 bytes {3} {11} [built] -chunk {4} a35356222d6a2151f7d3.js 899 bytes <{10}> +chunk {4} db744382311550539cad.js (main) 248 bytes >{0}< >{1}< >{2}< >{3}< >{5}< >{6}< >{7}< >{8}< >{9}< >{10}< >{11}< [entry] [rendered] + > ./index main + [11] ./index.js 248 bytes {4} [built] +chunk {5} 6a80fd33f274d3117a32.js 899 bytes <{4}> > ./a [11] ./index.js 1:0-16 - [10] ./a.js 899 bytes {4} [built] -chunk {5} e5fb899955fa03a8053b.js 1.76 KiB <{10}> + [10] ./a.js 899 bytes {5} [built] +chunk {6} a2fea791e74e99836233.js 1.76 KiB <{4}> > ./b ./c [11] ./index.js 2:0-23 - [0] ./b.js 899 bytes {0} {5} [built] - [5] ./c.js 899 bytes {5} {8} [built] -chunk {6} 58f368c01f66002b0eb3.js 1.76 KiB <{10}> ={2}= ={11}= + [0] ./b.js 899 bytes {0} {6} [built] + [5] ./c.js 899 bytes {6} {8} [built] +chunk {7} a9463ba36646aa40b97c.js 1.76 KiB <{4}> ={2}= ={11}= > ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51 - [8] ./j.js 901 bytes {6} {9} [built] - [9] ./k.js 899 bytes {6} {7} [built] -chunk {7} 6a8e74d82c35e3f013d2.js 899 bytes <{10}> ={0}= ={2}= ={3}= ={9}= - > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 - [9] ./k.js 899 bytes {6} {7} [built] -chunk {8} 5bc7f208cd99a83b4e33.js 1.76 KiB <{10}> ={1}= [recorded] aggressive splitted + [8] ./j.js 901 bytes {7} {10} [built] + [9] ./k.js 899 bytes {7} {9} [built] +chunk {8} 5bc7f208cd99a83b4e33.js 1.76 KiB <{4}> ={1}= [recorded] aggressive splitted > ./c ./d ./e [11] ./index.js 3:0-30 [1] ./d.js 899 bytes {0} {8} [built] - [5] ./c.js 899 bytes {5} {8} [built] -chunk {9} 13713792eb1b5038ab8b.js 1.76 KiB <{10}> ={0}= ={2}= ={3}= ={7}= [rendered] [recorded] aggressive splitted + [5] ./c.js 899 bytes {6} {8} [built] +chunk {9} 819c28704a84308cd0f6.js 899 bytes <{4}> ={0}= ={2}= ={3}= ={10}= > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 - [7] ./i.js 899 bytes {9} {11} [built] - [8] ./j.js 901 bytes {6} {9} [built] -chunk {10} d886db099ddf05aadc6d.js (main) 248 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< >{8}< >{9}< >{11}< [entry] [rendered] - > ./index main - [11] ./index.js 248 bytes {10} [built] -chunk {11} ba9fedb7aa0c69201639.js 1.76 KiB <{10}> ={2}= ={6}= [rendered] [recorded] aggressive splitted + [9] ./k.js 899 bytes {7} {9} [built] +chunk {10} 5ea68201264e1d2b28e9.js 1.76 KiB <{4}> ={0}= ={2}= ={3}= ={9}= [rendered] [recorded] aggressive splitted + > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 + [7] ./i.js 899 bytes {10} {11} [built] + [8] ./j.js 901 bytes {7} {10} [built] +chunk {11} ba9fedb7aa0c69201639.js 1.76 KiB <{4}> ={2}= ={7}= [rendered] [recorded] aggressive splitted > ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51 [6] ./h.js 899 bytes {3} {11} [built] - [7] ./i.js 899 bytes {9} {11} [built]" + [7] ./i.js 899 bytes {10} {11} [built]" `; exports[`StatsTestCases should print correct stats for async-commons-chunk 1`] = ` "Entrypoint main = main.js -chunk {0} 0.js 21 bytes <{3}> ={1}= ={2}= [rendered] reused as split chunk (cache group: default) - > [3] ./index.js 17:1-21:3 - > [3] ./index.js 2:1-5:3 - > ./a ./b [3] ./index.js 9:1-13:3 +chunk {0} 0.js 21 bytes <{1}> ={2}= ={3}= [rendered] reused as split chunk (cache group: default) + > [1] ./index.js 17:1-21:3 + > [1] ./index.js 2:1-5:3 + > ./a ./b [1] ./index.js 9:1-13:3 [0] ./a.js 21 bytes {0} [built] -chunk {1} 1.js 21 bytes <{3}> ={0}= [rendered] - > ./a ./b [3] ./index.js 9:1-13:3 - [1] ./b.js 21 bytes {1} [built] -chunk {2} 2.js 21 bytes <{3}> ={0}= [rendered] - > [3] ./index.js 17:1-21:3 - [2] ./c.js 21 bytes {2} [built] -chunk {3} main.js (main) 515 bytes >{0}< >{1}< >{2}< [entry] [rendered] +chunk {1} main.js (main) 515 bytes >{0}< >{2}< >{3}< [entry] [rendered] > ./ main - [3] ./index.js 515 bytes {3} [built]" + [1] ./index.js 515 bytes {1} [built] +chunk {2} 2.js 21 bytes <{1}> ={0}= [rendered] + > ./a ./b [1] ./index.js 9:1-13:3 + [2] ./b.js 21 bytes {2} [built] +chunk {3} 3.js 21 bytes <{1}> ={0}= [rendered] + > [1] ./index.js 17:1-21:3 + [3] ./c.js 21 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for async-commons-chunk-auto 1`] = ` @@ -148,192 +148,192 @@ exports[`StatsTestCases should print correct stats for async-commons-chunk-auto Entrypoint a = disabled/a.js Entrypoint b = disabled/b.js Entrypoint c = disabled/c.js - chunk {0} disabled/async-a.js (async-a) 216 bytes <{4}> >{3}< [rendered] + chunk {0} disabled/main.js (main) 147 bytes >{4}< >{5}< >{6}< [entry] [rendered] + > ./ main + [7] ./index.js 147 bytes {0} [built] + chunk {1} disabled/a.js (a) 216 bytes >{7}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [3] ./node_modules/y.js 20 bytes {1} {2} {4} {5} [built] + [5] ./a.js + 1 modules 156 bytes {1} {4} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {2} disabled/b.js (b) 152 bytes [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [2] ./f.js 20 bytes {2} {3} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {1} {2} {4} {5} [built] + [4] ./b.js 72 bytes {2} {5} [built] + chunk {3} disabled/c.js (c) 167 bytes [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [2] ./f.js 20 bytes {2} {3} {5} {6} {7} [built] + [6] ./c.js + 1 modules 107 bytes {3} {6} [built] + | ./c.js 72 bytes [built] + | ./node_modules/z.js 20 bytes [built] + chunk {4} disabled/async-a.js (async-a) 216 bytes <{0}> >{7}< [rendered] > ./a [7] ./index.js 1:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {5} {6} [built] - [5] ./a.js + 1 modules 156 bytes {0} {5} [built] + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [3] ./node_modules/y.js 20 bytes {1} {2} {4} {5} [built] + [5] ./a.js + 1 modules 156 bytes {1} {4} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {1} disabled/async-b.js (async-b) 152 bytes <{4}> [rendered] + chunk {5} disabled/async-b.js (async-b) 152 bytes <{0}> [rendered] > ./b [7] ./index.js 2:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [2] ./f.js 20 bytes {1} {2} {3} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {5} {6} [built] - [4] ./b.js 72 bytes {1} {6} [built] - chunk {2} disabled/async-c.js (async-c) 167 bytes <{4}> [rendered] + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [2] ./f.js 20 bytes {2} {3} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {1} {2} {4} {5} [built] + [4] ./b.js 72 bytes {2} {5} [built] + chunk {6} disabled/async-c.js (async-c) 167 bytes <{0}> [rendered] > ./c [7] ./index.js 3:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [2] ./f.js 20 bytes {1} {2} {3} {6} {7} [built] - [6] ./c.js + 1 modules 107 bytes {2} {7} [built] + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [2] ./f.js 20 bytes {2} {3} {5} {6} {7} [built] + [6] ./c.js + 1 modules 107 bytes {3} {6} [built] | ./c.js 72 bytes [built] | ./node_modules/z.js 20 bytes [built] - chunk {3} disabled/async-g.js (async-g) 54 bytes <{0}> <{5}> [rendered] + chunk {7} disabled/async-g.js (async-g) 54 bytes <{1}> <{4}> [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [2] ./f.js 20 bytes {1} {2} {3} {6} {7} [built] - [8] ./g.js 34 bytes {3} [built] - chunk {4} disabled/main.js (main) 147 bytes >{0}< >{1}< >{2}< [entry] [rendered] - > ./ main - [7] ./index.js 147 bytes {4} [built] - chunk {5} disabled/a.js (a) 216 bytes >{3}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {5} {6} [built] - [5] ./a.js + 1 modules 156 bytes {0} {5} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {6} disabled/b.js (b) 152 bytes [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [2] ./f.js 20 bytes {1} {2} {3} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {5} {6} [built] - [4] ./b.js 72 bytes {1} {6} [built] - chunk {7} disabled/c.js (c) 167 bytes [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [2] ./f.js 20 bytes {1} {2} {3} {6} {7} [built] - [6] ./c.js + 1 modules 107 bytes {2} {7} [built] - | ./c.js 72 bytes [built] - | ./node_modules/z.js 20 bytes [built] + [2] ./f.js 20 bytes {2} {3} {5} {6} {7} [built] + [8] ./g.js 34 bytes {7} [built] Child default: Entrypoint main = default/main.js Entrypoint a = default/a.js Entrypoint b = default/b.js Entrypoint c = default/c.js - chunk {0} default/vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= >{2}< >{7}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) + chunk {0} default/vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{4}> ={1}= ={2}= ={3}= ={8}= ={9}= ={10}= ={12}= >{2}< >{11}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= >{2}< >{7}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{4}> ={0}= ={2}= ={3}= ={8}= ={9}= ={10}= ={12}= >{2}< >{11}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{4}> <{9}> <{10}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{4}> <{5}> <{8}> ={0}= ={1}= ={3}= ={9}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={4}= ={5}= >{2}< >{7}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) + [2] ./f.js 20 bytes {2} {6} {7} [built] + chunk {3} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{4}> ={0}= ={1}= ={2}= ={8}= ={9}= >{2}< >{11}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - chunk {4} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{7}< [rendered] - > ./a [8] ./index.js 1:0-47 - [7] ./a.js + 1 modules 156 bytes {4} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {5} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] - > ./b [8] ./index.js 2:0-47 - [5] ./b.js 72 bytes {5} {11} [built] - chunk {6} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={8}= [rendered] - > ./c [8] ./index.js 3:0-47 - [6] ./c.js 72 bytes {6} {12} [built] - chunk {7} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{4}> <{10}> ={2}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {7} [built] - chunk {8} default/vendors~async-c.js (vendors~async-c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={6}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) - > ./c [8] ./index.js 3:0-47 - [4] ./node_modules/z.js 20 bytes {8} {12} [built] - chunk {9} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{8}< [entry] [rendered] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + chunk {4} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{8}< >{9}< >{10}< >{12}< [entry] [rendered] > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 216 bytes >{2}< >{7}< [entry] [rendered] + [8] ./index.js 147 bytes {4} [built] + chunk {5} default/a.js (a) 216 bytes >{2}< >{11}< [entry] [rendered] > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - [7] ./a.js + 1 modules 156 bytes {4} {10} [built] + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + [6] ./a.js + 1 modules 156 bytes {5} {8} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {11} default/b.js (b) 152 bytes [entry] [rendered] + chunk {6} default/b.js (b) 152 bytes [entry] [rendered] > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [2] ./f.js 20 bytes {2} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - [5] ./b.js 72 bytes {5} {11} [built] - chunk {12} default/c.js (c) 152 bytes [entry] [rendered] + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {2} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + [4] ./b.js 72 bytes {6} {9} [built] + chunk {7} default/c.js (c) 152 bytes [entry] [rendered] > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [2] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./node_modules/z.js 20 bytes {8} {12} [built] - [6] ./c.js 72 bytes {6} {12} [built] -Child vendors: - Entrypoint main = vendors/main.js - Entrypoint a = vendors/vendors.js vendors/a.js - Entrypoint b = vendors/vendors.js vendors/b.js - Entrypoint c = vendors/vendors.js vendors/c.js - chunk {0} vendors/async-a.js (async-a) 216 bytes <{5}> >{3}< [rendered] + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {2} {6} {7} [built] + [5] ./c.js 72 bytes {7} {10} [built] + [7] ./node_modules/z.js 20 bytes {7} {12} [built] + chunk {8} default/async-a.js (async-a) 156 bytes <{4}> ={0}= ={1}= ={3}= >{2}< >{11}< [rendered] > ./a [8] ./index.js 1:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {4} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {4} [built] - [7] ./a.js + 1 modules 156 bytes {0} {6} [built] + [6] ./a.js + 1 modules 156 bytes {5} {8} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {1} vendors/async-b.js (async-b) 152 bytes <{5}> [rendered] + chunk {9} default/async-b.js (async-b) 72 bytes <{4}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {4} [built] - [2] ./f.js 20 bytes {1} {2} {3} {7} {8} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {4} [built] - [5] ./b.js 72 bytes {1} {7} [built] - chunk {2} vendors/async-c.js (async-c) 152 bytes <{5}> [rendered] + [4] ./b.js 72 bytes {6} {9} [built] + chunk {10} default/async-c.js (async-c) 72 bytes <{4}> ={0}= ={1}= ={2}= ={12}= [rendered] > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {4} [built] - [2] ./f.js 20 bytes {1} {2} {3} {7} {8} [built] - [4] ./node_modules/z.js 20 bytes {2} {4} [built] - [6] ./c.js 72 bytes {2} {8} [built] - chunk {3} vendors/async-g.js (async-g) 54 bytes <{0}> <{4}> <{6}> [rendered] + [5] ./c.js 72 bytes {7} {10} [built] + chunk {11} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{8}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [2] ./f.js 20 bytes {1} {2} {3} {7} {8} [built] - [9] ./g.js 34 bytes {3} [built] - chunk {4} vendors/vendors.js (vendors) 60 bytes ={6}= ={7}= ={8}= >{3}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + [9] ./g.js 34 bytes {11} [built] + chunk {12} default/vendors~async-c.js (vendors~async-c) 20 bytes <{4}> ={0}= ={1}= ={2}= ={10}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) + > ./c [8] ./index.js 3:0-47 + [7] ./node_modules/z.js 20 bytes {7} {12} [built] +Child vendors: + Entrypoint main = vendors/main.js + Entrypoint a = vendors/vendors.js vendors/a.js + Entrypoint b = vendors/vendors.js vendors/b.js + Entrypoint c = vendors/vendors.js vendors/c.js + chunk {0} vendors/vendors.js (vendors) 60 bytes ={2}= ={3}= ={4}= >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./a a > ./b b > ./c c - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {4} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {4} [built] - [4] ./node_modules/z.js 20 bytes {2} {4} [built] - chunk {5} vendors/main.js (main) 147 bytes >{0}< >{1}< >{2}< [entry] [rendered] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {0} {5} {6} [built] + [7] ./node_modules/z.js 20 bytes {0} {7} [built] + chunk {1} vendors/main.js (main) 147 bytes >{5}< >{6}< >{7}< [entry] [rendered] > ./ main - [8] ./index.js 147 bytes {5} [built] - chunk {6} vendors/a.js (a) 176 bytes ={4}= >{3}< [entry] [rendered] + [8] ./index.js 147 bytes {1} [built] + chunk {2} vendors/a.js (a) 176 bytes ={0}= >{8}< [entry] [rendered] > ./a a - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {0} {6} [built] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [6] ./a.js + 1 modules 156 bytes {2} {5} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {7} vendors/b.js (b) 112 bytes ={4}= [entry] [rendered] + chunk {3} vendors/b.js (b) 112 bytes ={0}= [entry] [rendered] > ./b b - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [2] ./f.js 20 bytes {1} {2} {3} {7} {8} [built] - [5] ./b.js 72 bytes {1} {7} [built] - chunk {8} vendors/c.js (c) 112 bytes ={4}= [entry] [rendered] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {4} vendors/c.js (c) 112 bytes ={0}= [entry] [rendered] > ./c c - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [2] ./f.js 20 bytes {1} {2} {3} {7} {8} [built] - [6] ./c.js 72 bytes {2} {8} [built] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + chunk {5} vendors/async-a.js (async-a) 216 bytes <{1}> >{8}< [rendered] + > ./a [8] ./index.js 1:0-47 + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {0} {5} {6} [built] + [6] ./a.js + 1 modules 156 bytes {2} {5} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {6} vendors/async-b.js (async-b) 152 bytes <{1}> [rendered] + > ./b [8] ./index.js 2:0-47 + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [3] ./node_modules/y.js 20 bytes {0} {5} {6} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {7} vendors/async-c.js (async-c) 152 bytes <{1}> [rendered] + > ./c [8] ./index.js 3:0-47 + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + [7] ./node_modules/z.js 20 bytes {0} {7} [built] + chunk {8} vendors/async-g.js (async-g) 54 bytes <{0}> <{2}> <{5}> [rendered] + > ./g [] 6:0-47 + > ./g [] 6:0-47 + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [9] ./g.js 34 bytes {8} [built] Child multiple-vendors: Entrypoint main = multiple-vendors/main.js Entrypoint a = multiple-vendors/libs-x.js multiple-vendors/vendors~a~async-a~async-b~b.js multiple-vendors/a.js Entrypoint b = multiple-vendors/libs-x.js multiple-vendors/vendors~a~async-a~async-b~b.js multiple-vendors/b.js Entrypoint c = multiple-vendors/libs-x.js multiple-vendors/vendors~async-c~c.js multiple-vendors/c.js - chunk {0} multiple-vendors/libs-x.js (libs-x) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x) + chunk {0} multiple-vendors/libs-x.js (libs-x) 20 bytes <{5}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x) > ./a a > ./b b > ./c c @@ -341,67 +341,67 @@ Child multiple-vendors: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} multiple-vendors/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + chunk {1} multiple-vendors/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{5}> ={0}= ={2}= ={3}= ={6}= ={7}= ={9}= ={10}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + > ./a a + > ./b b + > ./a [8] ./index.js 1:0-47 + > ./b [8] ./index.js 2:0-47 + [3] ./node_modules/y.js 20 bytes {1} [built] + chunk {2} multiple-vendors/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{5}> ={0}= ={1}= ={3}= ={4}= ={9}= ={10}= ={11}= >{3}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} multiple-vendors/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{5}> <{9}> <{10}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + chunk {3} multiple-vendors/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{5}> <{6}> <{9}> ={0}= ={1}= ={2}= ={4}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} multiple-vendors/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={5}= ={6}= ={10}= ={11}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) - > ./a a - > ./b b - > ./a [8] ./index.js 1:0-47 - > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} multiple-vendors/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={7}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + [1] ./f.js 20 bytes {3} {7} {8} [built] + chunk {4} multiple-vendors/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{5}> ={0}= ={2}= ={3}= ={8}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] - chunk {5} multiple-vendors/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] + chunk {5} multiple-vendors/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{9}< >{10}< >{11}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {5} [built] + chunk {6} multiple-vendors/a.js (a) 176 bytes ={0}= ={1}= >{3}< >{12}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {7} multiple-vendors/b.js (b) 112 bytes ={0}= ={1}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {8} multiple-vendors/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {9} multiple-vendors/async-a.js (async-a) 156 bytes <{5}> ={0}= ={1}= ={2}= >{3}< >{12}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {6} multiple-vendors/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {10} multiple-vendors/async-b.js (async-b) 72 bytes <{5}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {6} {11} [built] - chunk {7} multiple-vendors/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {11} multiple-vendors/async-c.js (async-c) 72 bytes <{5}> ={0}= ={2}= ={3}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} multiple-vendors/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{10}> ={2}= [rendered] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {12} multiple-vendors/async-g.js (async-g) 34 bytes <{0}> <{1}> <{2}> <{6}> <{9}> ={3}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [9] ./g.js 34 bytes {8} [built] - chunk {9} multiple-vendors/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} multiple-vendors/a.js (a) 176 bytes ={0}= ={3}= >{2}< >{8}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {11} multiple-vendors/b.js (b) 112 bytes ={0}= ={3}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./b.js 72 bytes {6} {11} [built] - chunk {12} multiple-vendors/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [5] ./c.js 72 bytes {7} {12} [built] + [9] ./g.js 34 bytes {12} [built] Child all: Entrypoint main = all/main.js Entrypoint a = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~a~async-a~async-b~b.js all/a.js Entrypoint b = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~a~async-a~async-b~b.js all/b.js Entrypoint c = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~async-c~c.js all/c.js - chunk {0} all/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) + chunk {0} all/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{5}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) > ./a a > ./b b > ./c c @@ -409,124 +409,124 @@ Child all: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} all/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + chunk {1} all/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{5}> ={0}= ={2}= ={3}= ={6}= ={7}= ={9}= ={10}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + > ./a a + > ./b b + > ./a [8] ./index.js 1:0-47 + > ./b [8] ./index.js 2:0-47 + [3] ./node_modules/y.js 20 bytes {1} [built] + chunk {2} all/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{5}> ={0}= ={1}= ={3}= ={4}= ={9}= ={10}= ={11}= >{3}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} all/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{5}> <{9}> <{10}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + chunk {3} all/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{5}> <{6}> <{9}> ={0}= ={1}= ={2}= ={4}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} all/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={5}= ={6}= ={10}= ={11}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) - > ./a a - > ./b b - > ./a [8] ./index.js 1:0-47 - > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} all/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={7}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + [1] ./f.js 20 bytes {3} {7} {8} [built] + chunk {4} all/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{5}> ={0}= ={2}= ={3}= ={8}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] - chunk {5} all/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] + chunk {5} all/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{9}< >{10}< >{11}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {5} [built] + chunk {6} all/a.js (a) 176 bytes ={0}= ={1}= >{3}< >{12}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {7} all/b.js (b) 112 bytes ={0}= ={1}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {8} all/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {9} all/async-a.js (async-a) 156 bytes <{5}> ={0}= ={1}= ={2}= >{3}< >{12}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {6} all/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {10} all/async-b.js (async-b) 72 bytes <{5}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {6} {11} [built] - chunk {7} all/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {11} all/async-c.js (async-c) 72 bytes <{5}> ={0}= ={2}= ={3}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} all/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{10}> ={2}= [rendered] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {12} all/async-g.js (async-g) 34 bytes <{0}> <{1}> <{2}> <{6}> <{9}> ={3}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [9] ./g.js 34 bytes {8} [built] - chunk {9} all/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} all/a.js (a) 176 bytes ={0}= ={3}= >{2}< >{8}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {11} all/b.js (b) 112 bytes ={0}= ={3}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./b.js 72 bytes {6} {11} [built] - chunk {12} all/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [5] ./c.js 72 bytes {7} {12} [built]" + [9] ./g.js 34 bytes {12} [built]" `; exports[`StatsTestCases should print correct stats for chunk-module-id-range 1`] = ` -"Hash: b385901db3d63ff731a3 +"Hash: 8683bda4416097d173ee Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names -main1.js 4.86 KiB 0 [emitted] main1 -main2.js 4.85 KiB 1 [emitted] main2 +main2.js 4.85 KiB 0 [emitted] main2 +main1.js 4.86 KiB 1 [emitted] main1 Entrypoint main1 = main1.js Entrypoint main2 = main2.js -chunk {0} main1.js (main1) 136 bytes [entry] [rendered] +chunk {0} main2.js (main2) 136 bytes [entry] [rendered] + > ./main2 main2 + [0] ./d.js 20 bytes {0} {1} [built] + [1] ./e.js 20 bytes {0} [built] + [2] ./f.js 20 bytes {0} [built] + [3] ./main2.js 56 bytes {0} [built] + [101] ./a.js 20 bytes {0} {1} [built] +chunk {1} main1.js (main1) 136 bytes [entry] [rendered] > ./main1 main1 - [3] ./b.js 20 bytes {0} [built] - [4] ./main1.js 56 bytes {0} [built] - [100] ./d.js 20 bytes {0} {1} [built] + [0] ./d.js 20 bytes {0} {1} [built] + [4] ./c.js 20 bytes {1} [built] + [100] ./main1.js 56 bytes {1} [built] [101] ./a.js 20 bytes {0} {1} [built] - [102] ./c.js 20 bytes {0} [built] -chunk {1} main2.js (main2) 136 bytes [entry] [rendered] - > ./main2 main2 - [0] ./e.js 20 bytes {1} [built] - [1] ./f.js 20 bytes {1} [built] - [2] ./main2.js 56 bytes {1} [built] - [100] ./d.js 20 bytes {0} {1} [built] - [101] ./a.js 20 bytes {0} {1} [built]" + [102] ./b.js 20 bytes {1} [built]" `; exports[`StatsTestCases should print correct stats for chunks 1`] = ` -"Hash: 337155e238d6550ce6f7 +"Hash: bb90fc9e61205a066fee Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names -0.bundle.js 152 bytes 0 [emitted] -1.bundle.js 289 bytes 1 [emitted] - bundle.js 8.29 KiB 2 [emitted] main -3.bundle.js 227 bytes 3 [emitted] + bundle.js 8.28 KiB 0 [emitted] main +1.bundle.js 152 bytes 1 [emitted] +2.bundle.js 289 bytes 2 [emitted] +3.bundle.js 232 bytes 3 [emitted] Entrypoint main = bundle.js -chunk {0} 0.bundle.js 22 bytes <{2}> [rendered] - > ./b [4] ./index.js 2:0-16 - [2] ./b.js 22 bytes {0} [built] - amd require ./b [4] ./index.js 2:0-16 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {1} 1.bundle.js 54 bytes <{2}> >{3}< [rendered] - > ./c [4] ./index.js 3:0-16 - [3] ./c.js 54 bytes {1} [built] - amd require ./c [4] ./index.js 3:0-16 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {2} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] +chunk {0} bundle.js (main) 73 bytes >{1}< >{2}< [entry] [rendered] > ./index main - [4] ./index.js 51 bytes {2} [built] + [0] ./index.js 51 bytes {0} [built] single entry ./index main factory:Xms building:Xms = Xms - [5] ./a.js 22 bytes {2} [built] - cjs require ./a [4] ./index.js 1:0-14 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {3} 3.bundle.js 44 bytes <{1}> [rendered] + [1] ./a.js 22 bytes {0} [built] + cjs require ./a [0] ./index.js 1:0-14 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {1} 1.bundle.js 22 bytes <{0}> [rendered] + > ./b [0] ./index.js 2:0-16 + [2] ./b.js 22 bytes {1} [built] + amd require ./b [0] ./index.js 2:0-16 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {2} 2.bundle.js 54 bytes <{0}> >{3}< [rendered] + > ./c [0] ./index.js 3:0-16 + [3] ./c.js 54 bytes {2} [built] + amd require ./c [0] ./index.js 3:0-16 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {3} 3.bundle.js 44 bytes <{2}> [rendered] > [3] ./c.js 1:0-52 - [0] ./d.js 22 bytes {3} [built] + [4] ./d.js 22 bytes {3} [built] require.ensure item ./d [3] ./c.js 1:0-52 - [4] Xms -> [3] Xms -> factory:Xms building:Xms = Xms - [1] ./e.js 22 bytes {3} [built] + [0] Xms -> [3] Xms -> factory:Xms building:Xms = Xms + [5] ./e.js 22 bytes {3} [built] require.ensure item ./e [3] ./c.js 1:0-52 - [4] Xms -> [3] Xms -> factory:Xms building:Xms = Xms" + [0] Xms -> [3] Xms -> factory:Xms building:Xms = Xms" `; exports[`StatsTestCases should print correct stats for chunks-development 1`] = ` @@ -534,20 +534,11 @@ exports[`StatsTestCases should print correct stats for chunks-development 1`] = Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names + bundle.js 8.67 KiB main [emitted] main 0.bundle.js 297 bytes 0 [emitted] 1.bundle.js 433 bytes 1 [emitted] - bundle.js 8.67 KiB main [emitted] main 2.bundle.js 588 bytes 2 [emitted] Entrypoint main = bundle.js -chunk {main} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] - > ./index main - [./a.js] 22 bytes {main} [built] - cjs require ./a [./index.js] 1:0-14 - cjs require ./a [./e.js] 1:0-14 - [./index.js] Xms -> factory:Xms building:Xms = Xms - [./index.js] 51 bytes {main} [built] - single entry ./index main - factory:Xms building:Xms = Xms chunk {0} 0.bundle.js 22 bytes <{main}> [rendered] > ./b [./index.js] ./index.js 2:0-16 [./b.js] 22 bytes {0} [built] @@ -565,19 +556,28 @@ chunk {2} 2.bundle.js 60 bytes <{1}> [rendered] [./index.js] Xms -> [./c.js] Xms -> factory:Xms building:Xms = Xms [./e.js] 38 bytes {2} [built] require.ensure item ./e [./c.js] 1:0-52 - [./index.js] Xms -> [./c.js] Xms -> factory:Xms building:Xms = Xms" + [./index.js] Xms -> [./c.js] Xms -> factory:Xms building:Xms = Xms +chunk {main} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] + > ./index main + [./a.js] 22 bytes {main} [built] + cjs require ./a [./index.js] 1:0-14 + cjs require ./a [./e.js] 1:0-14 + [./index.js] Xms -> factory:Xms building:Xms = Xms + [./index.js] 51 bytes {main} [built] + single entry ./index main + factory:Xms building:Xms = Xms" `; exports[`StatsTestCases should print correct stats for circular-correctness 1`] = ` "Entrypoint main = bundle.js -chunk {0} 0.bundle.js (a) 49 bytes <{2}> <{3}> >{3}< [rendered] - [1] ./module-a.js 49 bytes {0} [built] -chunk {1} 1.bundle.js (b) 49 bytes <{2}> <{3}> >{3}< [rendered] - [2] ./module-b.js 49 bytes {1} [built] -chunk {2} bundle.js (main) 98 bytes >{0}< >{1}< [entry] [rendered] - [3] ./index.js 98 bytes {2} [built] -chunk {3} 3.bundle.js (c) 98 bytes <{0}> <{1}> >{0}< >{1}< [rendered] - [0] ./module-c.js 98 bytes {3} [built]" +chunk {0} bundle.js (main) 98 bytes >{1}< >{2}< [entry] [rendered] + [0] ./index.js 98 bytes {0} [built] +chunk {1} 1.bundle.js (a) 49 bytes <{0}> <{3}> >{3}< [rendered] + [1] ./module-a.js 49 bytes {1} [built] +chunk {2} 2.bundle.js (b) 49 bytes <{0}> <{3}> >{3}< [rendered] + [2] ./module-b.js 49 bytes {2} [built] +chunk {3} 3.bundle.js (c) 98 bytes <{1}> <{2}> >{1}< >{2}< [rendered] + [3] ./module-c.js 98 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for color-disabled 1`] = ` @@ -996,56 +996,56 @@ Child [warnings => false]: exports[`StatsTestCases should print correct stats for graph-correctness-entries 1`] = ` "Entrypoint e1 = e1.js Entrypoint e2 = e2.js -chunk {0} a.js (a) 49 bytes <{1}> <{2}> >{4}< [rendered] - [0] ./module-a.js 49 bytes {0} [built] - import() ./module-a [1] ./module-c.js 1:0-47 - import() ./module-a [3] ./e1.js 1:0-47 -chunk {1} c.js (c) 49 bytes <{3}> <{4}> >{0}< [rendered] - [1] ./module-c.js 49 bytes {1} [built] - import() ./module-c [2] ./module-b.js 1:0-47 - import() ./module-c [4] ./e2.js 1:0-47 -chunk {2} e1.js (e1) 49 bytes >{0}< [entry] [rendered] - [3] ./e1.js 49 bytes {2} [built] +chunk {0} e1.js (e1) 49 bytes >{2}< [entry] [rendered] + [0] ./e1.js 49 bytes {0} [built] single entry ./e1 e1 -chunk {3} e2.js (e2) 49 bytes >{1}< [entry] [rendered] - [4] ./e2.js 49 bytes {3} [built] +chunk {1} e2.js (e2) 49 bytes >{3}< [entry] [rendered] + [1] ./e2.js 49 bytes {1} [built] single entry ./e2 e2 -chunk {4} b.js (b) 49 bytes <{0}> >{1}< [rendered] - [2] ./module-b.js 49 bytes {4} [built] - import() ./module-b [0] ./module-a.js 1:0-47" +chunk {2} a.js (a) 49 bytes <{0}> <{3}> >{4}< [rendered] + [2] ./module-a.js 49 bytes {2} [built] + import() ./module-a [0] ./e1.js 1:0-47 + import() ./module-a [3] ./module-c.js 1:0-47 +chunk {3} c.js (c) 49 bytes <{1}> <{4}> >{2}< [rendered] + [3] ./module-c.js 49 bytes {3} [built] + import() ./module-c [1] ./e2.js 1:0-47 + import() ./module-c [4] ./module-b.js 1:0-47 +chunk {4} b.js (b) 49 bytes <{2}> >{3}< [rendered] + [4] ./module-b.js 49 bytes {4} [built] + import() ./module-b [2] ./module-a.js 1:0-47" `; exports[`StatsTestCases should print correct stats for graph-correctness-modules 1`] = ` "Entrypoint e1 = e1.js Entrypoint e2 = e2.js -chunk {0} y.js (y) 0 bytes <{3}> <{4}> [rendered] - [3] ./module-y.js 0 bytes {0} [built] - import() ./module-y [0] ./module-x.js 1:0-47 -chunk {1} a.js (a) 49 bytes <{2}> <{3}> >{5}< [rendered] - [1] ./module-a.js 49 bytes {1} [built] - import() ./module-a [2] ./module-c.js 1:0-47 - import() ./module-a [5] ./e1.js 2:0-47 -chunk {2} c.js (c) 49 bytes <{4}> <{5}> >{1}< [rendered] - [2] ./module-c.js 49 bytes {2} [built] - import() ./module-c [4] ./module-b.js 1:0-47 - import() ./module-c [6] ./e2.js 2:0-47 -chunk {3} e1.js (e1) 119 bytes >{0}< >{1}< [entry] [rendered] - [0] ./module-x.js 49 bytes {3} {4} [built] - import() ./module-x [4] ./module-b.js 2:0-20 - harmony side effect evaluation ./module-x [5] ./e1.js 1:0-20 - harmony side effect evaluation ./module-x [6] ./e2.js 1:0-20 - [5] ./e1.js 70 bytes {3} [built] +chunk {0} e1.js (e1) 119 bytes >{2}< >{3}< [entry] [rendered] + [0] ./module-x.js 49 bytes {0} {1} [built] + harmony side effect evaluation ./module-x [2] ./e1.js 1:0-20 + harmony side effect evaluation ./module-x [3] ./e2.js 1:0-20 + import() ./module-x [6] ./module-b.js 2:0-20 + [2] ./e1.js 70 bytes {0} [built] single entry ./e1 e1 -chunk {4} e2.js (e2) 119 bytes >{0}< >{2}< [entry] [rendered] - [0] ./module-x.js 49 bytes {3} {4} [built] - import() ./module-x [4] ./module-b.js 2:0-20 - harmony side effect evaluation ./module-x [5] ./e1.js 1:0-20 - harmony side effect evaluation ./module-x [6] ./e2.js 1:0-20 - [6] ./e2.js 70 bytes {4} [built] +chunk {1} e2.js (e2) 119 bytes >{3}< >{4}< [entry] [rendered] + [0] ./module-x.js 49 bytes {0} {1} [built] + harmony side effect evaluation ./module-x [2] ./e1.js 1:0-20 + harmony side effect evaluation ./module-x [3] ./e2.js 1:0-20 + import() ./module-x [6] ./module-b.js 2:0-20 + [3] ./e2.js 70 bytes {1} [built] single entry ./e2 e2 -chunk {5} b.js (b) 179 bytes <{1}> >{2}< [rendered] - [4] ./module-b.js 179 bytes {5} [built] - import() ./module-b [1] ./module-a.js 1:0-47" +chunk {2} a.js (a) 49 bytes <{0}> <{4}> >{5}< [rendered] + [4] ./module-a.js 49 bytes {2} [built] + import() ./module-a [2] ./e1.js 2:0-47 + import() ./module-a [5] ./module-c.js 1:0-47 +chunk {3} y.js (y) 0 bytes <{0}> <{1}> [rendered] + [1] ./module-y.js 0 bytes {3} [built] + import() ./module-y [0] ./module-x.js 1:0-47 +chunk {4} c.js (c) 49 bytes <{1}> <{5}> >{2}< [rendered] + [5] ./module-c.js 49 bytes {4} [built] + import() ./module-c [3] ./e2.js 2:0-47 + import() ./module-c [6] ./module-b.js 1:0-47 +chunk {5} b.js (b) 179 bytes <{2}> >{4}< [rendered] + [6] ./module-b.js 179 bytes {5} [built] + import() ./module-b [4] ./module-a.js 1:0-47" `; exports[`StatsTestCases should print correct stats for import-context-filter 1`] = ` @@ -1066,26 +1066,26 @@ Entrypoint entry = entry.js `; exports[`StatsTestCases should print correct stats for import-weak 1`] = ` -"Hash: 5043a861e2975c70a2e7 +"Hash: dbee3e50dffcb0b8c23e Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 149 bytes 0 [emitted] -entry.js 8.53 KiB 1 [emitted] entry +entry.js 8.53 KiB 0 [emitted] entry + 1.js 149 bytes 1 [emitted] Entrypoint entry = entry.js -[0] ./modules/b.js 22 bytes {0} [built] -[1] ./entry.js 120 bytes {1} [built] +[0] ./modules/b.js 22 bytes {1} [built] +[1] ./entry.js 120 bytes {0} [built] [2] ./modules/a.js 37 bytes [built]" `; exports[`StatsTestCases should print correct stats for import-with-invalid-options-comments 1`] = ` "Built at: Thu Jan 01 1970 00:00:00 GMT -[0] ./chunk-a.js 27 bytes {2} [built] -[1] ./chunk-b.js 27 bytes {3} [built] -[2] ./chunk-c.js 27 bytes {4} [built] -[3] ./chunk-d.js 27 bytes {5} [built] -[4] ./chunk.js 401 bytes {0} [built] [3 warnings] -[5] ./index.js 50 bytes {1} [built] +[0] ./index.js 50 bytes {0} [built] +[1] ./chunk.js 401 bytes {1} [built] [3 warnings] +[2] ./chunk-a.js 27 bytes {2} [built] +[3] ./chunk-b.js 27 bytes {3} [built] +[4] ./chunk-c.js 27 bytes {4} [built] +[5] ./chunk-d.js 27 bytes {5} [built] WARNING in ./chunk.js 4:11-77 Compilation error while processing magic comment(-s): /* webpack Prefetch: 0, webpackChunkName: \\"notGoingToCompile-c\\" */: Unexpected identifier @@ -1101,7 +1101,7 @@ Compilation error while processing magic comment(-s): /* webpackPrefetch: true, `; exports[`StatsTestCases should print correct stats for issue-7577 1`] = ` -"Hash: 343642fcbd3799129ba328960aea386766e9b4685f5e642073649561789d +"Hash: 343642fcbd3799129ba328960aea386766e9b4687cb799c3c09b3e52b1ac Child Hash: 343642fcbd3799129ba3 Time: Xms @@ -1125,23 +1125,23 @@ Child [0] ./node_modules/vendor.js 23 bytes {vendors~main} [built] [1] ./b.js 17 bytes {all~main} [built] Child - Hash: 5f5e642073649561789d + Hash: 7cb799c3c09b3e52b1ac Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - c-0-6bb505f933a38ad423d3.js 150 bytes 0 [emitted] - c-1-e2f2199a8d3d8508c29c.js 459 bytes 1 [emitted] - c-all~main-5bf91ad3502dd7005727.js 299 bytes all~main [emitted] all~main - c-main-b48f733d0f40de7539ce.js 114 bytes main [emitted] main - c-runtime~main-4582dbde6a81040ef3aa.js 8.84 KiB runtime~main [emitted] runtime~main - Entrypoint main = c-runtime~main-4582dbde6a81040ef3aa.js c-all~main-5bf91ad3502dd7005727.js c-main-b48f733d0f40de7539ce.js (prefetch: c-0-6bb505f933a38ad423d3.js c-1-e2f2199a8d3d8508c29c.js) - [0] ./node_modules/vendor.js 23 bytes {0} [built] - [1] ./b.js 17 bytes {1} [built] - [2] ./c.js 61 bytes {all~main} [built]" + c-main-a7197f03f8f2dfea0fa5.js 114 bytes main [emitted] main + c-0-775a18a4f14e4483daf8.js 153 bytes 0 [emitted] + c-1-f0767101f6e51d910fd6.js 450 bytes 1 [emitted] + c-all~main-7b1b86e650f3856c17c9.js 305 bytes all~main [emitted] all~main + c-runtime~main-07e05a23b9679c3f51dd.js 8.84 KiB runtime~main [emitted] runtime~main + Entrypoint main = c-runtime~main-07e05a23b9679c3f51dd.js c-all~main-7b1b86e650f3856c17c9.js c-main-a7197f03f8f2dfea0fa5.js (prefetch: c-0-775a18a4f14e4483daf8.js c-1-f0767101f6e51d910fd6.js) + [0] ./b.js 17 bytes {1} [built] + [1] ./c.js 61 bytes {all~main} [built] + [2] ./node_modules/vendor.js 23 bytes {0} [built]" `; exports[`StatsTestCases should print correct stats for limit-chunk-count-plugin 1`] = ` -"Hash: 3f682d19df3a78cc355bf6b5cf6affcd0a3789f4d4554dbae635e8619c03ae9e4a73fc96c164d6f0 +"Hash: 3f682d19df3a78cc355b358ecf1b8718ebbde62e08074f8efde660b3b349f7c7c171ed4a3a7adb19 Child 1 chunks: Hash: 3f682d19df3a78cc355b Time: Xms @@ -1157,59 +1157,59 @@ Child 1 chunks: [4] ./d.js 22 bytes {0} [built] [5] ./e.js 22 bytes {0} [built] Child 2 chunks: - Hash: f6b5cf6affcd0a3789f4 + Hash: 358ecf1b8718ebbde62e Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.bundle.js 632 bytes 0 [emitted] + 0.bundle.js 641 bytes 0 [emitted] bundle.js 8.28 KiB 1 [emitted] main Entrypoint main = bundle.js chunk {0} 0.bundle.js 118 bytes <{0}> <{1}> >{0}< [rendered] - [0] ./d.js 22 bytes {0} [built] - [1] ./e.js 22 bytes {0} [built] - [2] ./a.js 22 bytes {0} [built] - [3] ./b.js 22 bytes {0} [built] - [4] ./c.js 30 bytes {0} [built] + [1] ./a.js 22 bytes {0} [built] + [2] ./b.js 22 bytes {0} [built] + [3] ./c.js 30 bytes {0} [built] + [4] ./d.js 22 bytes {0} [built] + [5] ./e.js 22 bytes {0} [built] chunk {1} bundle.js (main) 73 bytes >{0}< [entry] [rendered] - [5] ./index.js 73 bytes {1} [built] + [0] ./index.js 73 bytes {1} [built] Child 3 chunks: - Hash: d4554dbae635e8619c03 + Hash: 08074f8efde660b3b349 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names 0.bundle.js 494 bytes 0 [emitted] - 1.bundle.js 245 bytes 1 [emitted] + 1.bundle.js 232 bytes 1 [emitted] bundle.js 8.28 KiB 2 [emitted] main Entrypoint main = bundle.js chunk {0} 0.bundle.js 74 bytes <{0}> <{2}> >{0}< >{1}< [rendered] - [0] ./d.js 22 bytes {0} [built] - [2] ./a.js 22 bytes {0} [built] - [4] ./c.js 30 bytes {0} [built] + [1] ./a.js 22 bytes {0} [built] + [3] ./c.js 30 bytes {0} [built] + [4] ./d.js 22 bytes {0} [built] chunk {1} 1.bundle.js 44 bytes <{0}> <{2}> [rendered] - [1] ./e.js 22 bytes {1} [built] - [3] ./b.js 22 bytes {1} [built] + [2] ./b.js 22 bytes {1} [built] + [5] ./e.js 22 bytes {1} [built] chunk {2} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] - [5] ./index.js 73 bytes {2} [built] + [0] ./index.js 73 bytes {2} [built] Child 4 chunks: - Hash: ae9e4a73fc96c164d6f0 + Hash: f7c7c171ed4a3a7adb19 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.bundle.js 236 bytes 0 [emitted] - 1.bundle.js 245 bytes 1 [emitted] - 2.bundle.js 323 bytes 2 [emitted] - bundle.js 8.28 KiB 3 [emitted] main + 0.bundle.js 254 bytes 0 [emitted] + 1.bundle.js 232 bytes 1 [emitted] + bundle.js 8.28 KiB 2 [emitted] main + 3.bundle.js 323 bytes 3 [emitted] Entrypoint main = bundle.js chunk {0} 0.bundle.js 44 bytes <{2}> <{3}> [rendered] - [0] ./d.js 22 bytes {0} [built] - [2] ./a.js 22 bytes {0} [built] + [1] ./a.js 22 bytes {0} [built] + [4] ./d.js 22 bytes {0} [built] chunk {1} 1.bundle.js 44 bytes <{2}> <{3}> [rendered] - [1] ./e.js 22 bytes {1} [built] - [3] ./b.js 22 bytes {1} [built] - chunk {2} 2.bundle.js 30 bytes <{3}> >{0}< >{1}< [rendered] - [4] ./c.js 30 bytes {2} [built] - chunk {3} bundle.js (main) 73 bytes >{0}< >{1}< >{2}< [entry] [rendered] - [5] ./index.js 73 bytes {3} [built]" + [2] ./b.js 22 bytes {1} [built] + [5] ./e.js 22 bytes {1} [built] + chunk {2} bundle.js (main) 73 bytes >{0}< >{1}< >{3}< [entry] [rendered] + [0] ./index.js 73 bytes {2} [built] + chunk {3} 3.bundle.js 30 bytes <{2}> >{0}< >{1}< [rendered] + [3] ./c.js 30 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for max-modules 1`] = ` @@ -1268,107 +1268,107 @@ Entrypoint main = main.js `; exports[`StatsTestCases should print correct stats for module-assets 1`] = ` -"Hash: ceae20d6bebac3a4387e +"Hash: bd21dd593eac70b70df9 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint main = main.js -chunk {0} 0.js 68 bytes <{1}> [rendered] - [0] ./node_modules/a/1.png 51 bytes {0} [built] [1 asset] - [1] ./node_modules/a/index.js 17 bytes {0} [built] -chunk {1} main.js (main) 12 bytes >{0}< [entry] [rendered] - [2] ./index.js 12 bytes {1} [built] -[0] ./node_modules/a/1.png 51 bytes {0} [built] [1 asset] -[1] ./node_modules/a/index.js 17 bytes {0} [built] -[2] ./index.js 12 bytes {1} [built]" +chunk {0} main.js (main) 12 bytes >{1}< [entry] [rendered] + [0] ./index.js 12 bytes {0} [built] +chunk {1} 1.js 68 bytes <{0}> [rendered] + [1] ./node_modules/a/index.js 17 bytes {1} [built] + [2] ./node_modules/a/1.png 51 bytes {1} [built] [1 asset] +[0] ./index.js 12 bytes {0} [built] +[1] ./node_modules/a/index.js 17 bytes {1} [built] +[2] ./node_modules/a/1.png 51 bytes {1} [built] [1 asset]" `; exports[`StatsTestCases should print correct stats for module-deduplication 1`] = ` "Asset Size Chunks Chunk Names - 0.js 730 bytes 0, 4 [emitted] - 1.js 730 bytes 1, 5 [emitted] - 2.js 730 bytes 2, 3 [emitted] - 3.js 661 bytes 3 [emitted] - 4.js 661 bytes 4 [emitted] - 5.js 661 bytes 5 [emitted] -e1.js 9.42 KiB 6 [emitted] e1 -e2.js 9.44 KiB 7 [emitted] e2 -e3.js 9.46 KiB 8 [emitted] e3 + 0.js 730 bytes 0, 7 [emitted] + 1.js 730 bytes 1, 8 [emitted] + 2.js 730 bytes 2, 6 [emitted] +e1.js 9.42 KiB 3 [emitted] e1 +e2.js 9.44 KiB 4 [emitted] e2 +e3.js 9.46 KiB 5 [emitted] e3 + 6.js 661 bytes 6 [emitted] + 7.js 661 bytes 7 [emitted] + 8.js 661 bytes 8 [emitted] Entrypoint e1 = e1.js Entrypoint e2 = e2.js Entrypoint e3 = e3.js -chunk {0} 0.js 37 bytes <{6}> <{8}> [rendered] - [3] ./f.js 9 bytes {0} {7} [built] - [6] ./async2.js 28 bytes {0} {4} [built] -chunk {1} 1.js 37 bytes <{6}> <{7}> [rendered] - [4] ./h.js 9 bytes {1} {8} [built] - [7] ./async3.js 28 bytes {1} {5} [built] -chunk {2} 2.js 37 bytes <{7}> <{8}> [rendered] - [2] ./d.js 9 bytes {2} {6} [built] - [5] ./async1.js 28 bytes {2} {3} [built] -chunk {3} 3.js 28 bytes <{6}> [rendered] - [5] ./async1.js 28 bytes {2} {3} [built] -chunk {4} 4.js 28 bytes <{7}> [rendered] - [6] ./async2.js 28 bytes {0} {4} [built] -chunk {5} 5.js 28 bytes <{8}> [rendered] - [7] ./async3.js 28 bytes {1} {5} [built] -chunk {6} e1.js (e1) 152 bytes >{0}< >{1}< >{3}< [entry] [rendered] - [0] ./b.js 9 bytes {6} {7} {8} [built] - [1] ./a.js 9 bytes {6} {7} {8} [built] - [2] ./d.js 9 bytes {2} {6} [built] - [8] ./e1.js 116 bytes {6} [built] - [9] ./c.js 9 bytes {6} [built] -chunk {7} e2.js (e2) 152 bytes >{1}< >{2}< >{4}< [entry] [rendered] - [0] ./b.js 9 bytes {6} {7} {8} [built] - [1] ./a.js 9 bytes {6} {7} {8} [built] - [3] ./f.js 9 bytes {0} {7} [built] - [10] ./e2.js 116 bytes {7} [built] - [11] ./e.js 9 bytes {7} [built] -chunk {8} e3.js (e3) 152 bytes >{0}< >{2}< >{5}< [entry] [rendered] - [0] ./b.js 9 bytes {6} {7} {8} [built] - [1] ./a.js 9 bytes {6} {7} {8} [built] - [4] ./h.js 9 bytes {1} {8} [built] - [12] ./e3.js 116 bytes {8} [built] - [13] ./g.js 9 bytes {8} [built]" +chunk {0} 0.js 37 bytes <{3}> <{5}> [rendered] + [3] ./async2.js 28 bytes {0} {7} [built] + [6] ./f.js 9 bytes {0} {4} [built] +chunk {1} 1.js 37 bytes <{3}> <{4}> [rendered] + [4] ./async3.js 28 bytes {1} {8} [built] + [7] ./h.js 9 bytes {1} {5} [built] +chunk {2} 2.js 37 bytes <{4}> <{5}> [rendered] + [2] ./async1.js 28 bytes {2} {6} [built] + [5] ./d.js 9 bytes {2} {3} [built] +chunk {3} e1.js (e1) 152 bytes >{0}< >{1}< >{6}< [entry] [rendered] + [0] ./b.js 9 bytes {3} {4} {5} [built] + [1] ./a.js 9 bytes {3} {4} {5} [built] + [5] ./d.js 9 bytes {2} {3} [built] + [8] ./e1.js 116 bytes {3} [built] + [9] ./c.js 9 bytes {3} [built] +chunk {4} e2.js (e2) 152 bytes >{1}< >{2}< >{7}< [entry] [rendered] + [0] ./b.js 9 bytes {3} {4} {5} [built] + [1] ./a.js 9 bytes {3} {4} {5} [built] + [6] ./f.js 9 bytes {0} {4} [built] + [10] ./e2.js 116 bytes {4} [built] + [11] ./e.js 9 bytes {4} [built] +chunk {5} e3.js (e3) 152 bytes >{0}< >{2}< >{8}< [entry] [rendered] + [0] ./b.js 9 bytes {3} {4} {5} [built] + [1] ./a.js 9 bytes {3} {4} {5} [built] + [7] ./h.js 9 bytes {1} {5} [built] + [12] ./e3.js 116 bytes {5} [built] + [13] ./g.js 9 bytes {5} [built] +chunk {6} 6.js 28 bytes <{3}> [rendered] + [2] ./async1.js 28 bytes {2} {6} [built] +chunk {7} 7.js 28 bytes <{4}> [rendered] + [3] ./async2.js 28 bytes {0} {7} [built] +chunk {8} 8.js 28 bytes <{5}> [rendered] + [4] ./async3.js 28 bytes {1} {8} [built]" `; exports[`StatsTestCases should print correct stats for module-deduplication-named 1`] = ` " Asset Size Chunks Chunk Names -async1.js 818 bytes 0 [emitted] async1 -async2.js 818 bytes 1 [emitted] async2 -async3.js 818 bytes 2 [emitted] async3 - e1.js 9.31 KiB 3 [emitted] e1 - e2.js 9.33 KiB 4 [emitted] e2 - e3.js 9.35 KiB 5 [emitted] e3 + e1.js 9.28 KiB 0 [emitted] e1 + e2.js 9.3 KiB 1 [emitted] e2 + e3.js 9.32 KiB 2 [emitted] e3 +async1.js 820 bytes 3 [emitted] async1 +async2.js 820 bytes 4 [emitted] async2 +async3.js 820 bytes 5 [emitted] async3 Entrypoint e1 = e1.js Entrypoint e2 = e2.js Entrypoint e3 = e3.js -chunk {0} async1.js (async1) 89 bytes <{2}> <{3}> >{1}< [rendered] +chunk {0} e1.js (e1) 144 bytes >{3}< [entry] [rendered] + [0] ./b.js 9 bytes {0} {1} {2} [built] + [1] ./a.js 9 bytes {0} {1} {2} [built] [2] ./d.js 9 bytes {0} {3} [built] - [5] ./async1.js 80 bytes {0} [built] -chunk {1} async2.js (async2) 89 bytes <{0}> <{4}> >{2}< [rendered] + [5] ./e1.js 108 bytes {0} [built] + [6] ./c.js 9 bytes {0} [built] +chunk {1} e2.js (e2) 144 bytes >{4}< [entry] [rendered] + [0] ./b.js 9 bytes {0} {1} {2} [built] + [1] ./a.js 9 bytes {0} {1} {2} [built] [3] ./f.js 9 bytes {1} {4} [built] - [6] ./async2.js 80 bytes {1} [built] -chunk {2} async3.js (async3) 89 bytes <{1}> <{5}> >{0}< [rendered] - [4] ./h.js 9 bytes {2} {5} [built] - [7] ./async3.js 80 bytes {2} [built] -chunk {3} e1.js (e1) 144 bytes >{0}< [entry] [rendered] - [0] ./b.js 9 bytes {3} {4} {5} [built] - [1] ./a.js 9 bytes {3} {4} {5} [built] - [2] ./d.js 9 bytes {0} {3} [built] - [8] ./e1.js 108 bytes {3} [built] - [9] ./c.js 9 bytes {3} [built] -chunk {4} e2.js (e2) 144 bytes >{1}< [entry] [rendered] - [0] ./b.js 9 bytes {3} {4} {5} [built] - [1] ./a.js 9 bytes {3} {4} {5} [built] + [7] ./e2.js 108 bytes {1} [built] + [8] ./e.js 9 bytes {1} [built] +chunk {2} e3.js (e3) 144 bytes >{5}< [entry] [rendered] + [0] ./b.js 9 bytes {0} {1} {2} [built] + [1] ./a.js 9 bytes {0} {1} {2} [built] + [4] ./h.js 9 bytes {2} {5} [built] + [9] ./e3.js 108 bytes {2} [built] + [10] ./g.js 9 bytes {2} [built] +chunk {3} async1.js (async1) 89 bytes <{0}> <{5}> >{4}< [rendered] + [2] ./d.js 9 bytes {0} {3} [built] + [11] ./async1.js 80 bytes {3} [built] +chunk {4} async2.js (async2) 89 bytes <{1}> <{3}> >{5}< [rendered] [3] ./f.js 9 bytes {1} {4} [built] - [10] ./e2.js 108 bytes {4} [built] - [11] ./e.js 9 bytes {4} [built] -chunk {5} e3.js (e3) 144 bytes >{2}< [entry] [rendered] - [0] ./b.js 9 bytes {3} {4} {5} [built] - [1] ./a.js 9 bytes {3} {4} {5} [built] + [12] ./async2.js 80 bytes {4} [built] +chunk {5} async3.js (async3) 89 bytes <{2}> <{4}> >{3}< [rendered] [4] ./h.js 9 bytes {2} {5} [built] - [12] ./e3.js 108 bytes {5} [built] - [13] ./g.js 9 bytes {5} [built]" + [13] ./async3.js 80 bytes {5} [built]" `; exports[`StatsTestCases should print correct stats for module-trace-disabled-in-error 1`] = ` @@ -1402,51 +1402,51 @@ exports[`StatsTestCases should print correct stats for named-chunk-groups 1`] = Chunk Group async-a = async-a~async-b.js async-a.js Chunk Group async-b = async-a~async-b.js async-b.js Chunk Group async-c = vendors.js async-c.js - chunk {0} async-a~async-b.js (async-a~async-b) 133 bytes <{5}> ={1}= ={2}= [rendered] split chunk (cache group: default) (name: async-a~async-b) - > ./a [6] ./index.js 1:0-47 - > ./b [6] ./index.js 2:0-47 - [0] ./shared.js 133 bytes {0} [built] - chunk {1} async-a.js (async-a) 40 bytes <{5}> ={0}= [rendered] - > ./a [6] ./index.js 1:0-47 - [3] ./a.js 40 bytes {1} [built] - chunk {2} async-b.js (async-b) 40 bytes <{5}> ={0}= [rendered] - > ./b [6] ./index.js 2:0-47 - [4] ./b.js 40 bytes {2} [built] - chunk {3} async-c.js (async-c) 45 bytes <{5}> ={4}= [rendered] - > ./c [6] ./index.js 3:0-47 - [5] ./c.js 45 bytes {3} [built] - chunk {4} vendors.js (vendors) 40 bytes <{5}> ={3}= [rendered] split chunk (cache group: vendors) (name: vendors) - > ./c [6] ./index.js 3:0-47 - [1] ./node_modules/x.js 20 bytes {4} [built] - [2] ./node_modules/y.js 20 bytes {4} [built] - chunk {5} main.js (main) 146 bytes >{0}< >{1}< >{2}< >{3}< >{4}< [entry] [rendered] + chunk {0} async-a~async-b.js (async-a~async-b) 133 bytes <{1}> ={2}= ={3}= [rendered] split chunk (cache group: default) (name: async-a~async-b) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + [4] ./shared.js 133 bytes {0} [built] + chunk {1} main.js (main) 146 bytes >{0}< >{2}< >{3}< >{4}< >{5}< [entry] [rendered] > ./ main - [6] ./index.js 146 bytes {5} [built] + [0] ./index.js 146 bytes {1} [built] + chunk {2} async-a.js (async-a) 40 bytes <{1}> ={0}= [rendered] + > ./a [0] ./index.js 1:0-47 + [1] ./a.js 40 bytes {2} [built] + chunk {3} async-b.js (async-b) 40 bytes <{1}> ={0}= [rendered] + > ./b [0] ./index.js 2:0-47 + [2] ./b.js 40 bytes {3} [built] + chunk {4} async-c.js (async-c) 45 bytes <{1}> ={5}= [rendered] + > ./c [0] ./index.js 3:0-47 + [3] ./c.js 45 bytes {4} [built] + chunk {5} vendors.js (vendors) 40 bytes <{1}> ={4}= [rendered] split chunk (cache group: vendors) (name: vendors) + > ./c [0] ./index.js 3:0-47 + [5] ./node_modules/x.js 20 bytes {5} [built] + [6] ./node_modules/y.js 20 bytes {5} [built] Child Entrypoint main = main.js Chunk Group async-a = async-a~async-b.js async-a.js Chunk Group async-b = async-a~async-b.js async-b.js Chunk Group async-c = vendors.js async-c.js - chunk {0} async-a~async-b.js (async-a~async-b) 133 bytes <{5}> ={1}= ={2}= [rendered] split chunk (cache group: default) (name: async-a~async-b) - > ./a [6] ./index.js 1:0-47 - > ./b [6] ./index.js 2:0-47 - [0] ./shared.js 133 bytes {0} [built] - chunk {1} async-a.js (async-a) 40 bytes <{5}> ={0}= [rendered] - > ./a [6] ./index.js 1:0-47 - [3] ./a.js 40 bytes {1} [built] - chunk {2} async-b.js (async-b) 40 bytes <{5}> ={0}= [rendered] - > ./b [6] ./index.js 2:0-47 - [4] ./b.js 40 bytes {2} [built] - chunk {3} async-c.js (async-c) 45 bytes <{5}> ={4}= [rendered] - > ./c [6] ./index.js 3:0-47 - [5] ./c.js 45 bytes {3} [built] - chunk {4} vendors.js (vendors) 40 bytes <{5}> ={3}= [rendered] split chunk (cache group: vendors) (name: vendors) - > ./c [6] ./index.js 3:0-47 - [1] ./node_modules/x.js 20 bytes {4} [built] - [2] ./node_modules/y.js 20 bytes {4} [built] - chunk {5} main.js (main) 146 bytes >{0}< >{1}< >{2}< >{3}< >{4}< [entry] [rendered] + chunk {0} async-a~async-b.js (async-a~async-b) 133 bytes <{1}> ={2}= ={3}= [rendered] split chunk (cache group: default) (name: async-a~async-b) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + [4] ./shared.js 133 bytes {0} [built] + chunk {1} main.js (main) 146 bytes >{0}< >{2}< >{3}< >{4}< >{5}< [entry] [rendered] > ./ main - [6] ./index.js 146 bytes {5} [built]" + [0] ./index.js 146 bytes {1} [built] + chunk {2} async-a.js (async-a) 40 bytes <{1}> ={0}= [rendered] + > ./a [0] ./index.js 1:0-47 + [1] ./a.js 40 bytes {2} [built] + chunk {3} async-b.js (async-b) 40 bytes <{1}> ={0}= [rendered] + > ./b [0] ./index.js 2:0-47 + [2] ./b.js 40 bytes {3} [built] + chunk {4} async-c.js (async-c) 45 bytes <{1}> ={5}= [rendered] + > ./c [0] ./index.js 3:0-47 + [3] ./c.js 45 bytes {4} [built] + chunk {5} vendors.js (vendors) 40 bytes <{1}> ={4}= [rendered] split chunk (cache group: vendors) (name: vendors) + > ./c [0] ./index.js 3:0-47 + [5] ./node_modules/x.js 20 bytes {5} [built] + [6] ./node_modules/y.js 20 bytes {5} [built]" `; exports[`StatsTestCases should print correct stats for named-chunks-plugin 1`] = ` @@ -1464,17 +1464,17 @@ Entrypoint entry = vendor.js entry.js `; exports[`StatsTestCases should print correct stats for named-chunks-plugin-async 1`] = ` -"Hash: 8c348decadc8408ab829 +"Hash: 70179b5d2d5e089a82e9 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names -chunk-containing-__a_js.js 313 bytes chunk-containing-__a_js [emitted] -chunk-containing-__b_js.js 173 bytes chunk-containing-__b_js [emitted] +chunk-containing-__a_js.js 307 bytes chunk-containing-__a_js [emitted] +chunk-containing-__b_js.js 182 bytes chunk-containing-__b_js [emitted] entry.js 8.18 KiB entry [emitted] entry Entrypoint entry = entry.js -[0] ./modules/b.js 22 bytes {chunk-containing-__b_js} [built] -[1] ./modules/a.js 37 bytes {chunk-containing-__a_js} [built] -[2] ./entry.js 47 bytes {entry} [built]" +[0] ./entry.js 47 bytes {entry} [built] +[1] ./modules/b.js 22 bytes {chunk-containing-__b_js} [built] +[2] ./modules/a.js 37 bytes {chunk-containing-__a_js} [built]" `; exports[`StatsTestCases should print correct stats for no-emit-on-errors-plugin-with-child-error 1`] = ` @@ -1500,53 +1500,53 @@ Child child: `; exports[`StatsTestCases should print correct stats for optimize-chunks 1`] = ` -"Hash: 8d1bfb62ba8ed42918d6 +"Hash: 79cd36807b8c3ac6b11e Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names cir1.js 299 bytes 0 [emitted] cir1 - ab.js 183 bytes 1 [emitted] ab - abd.js 268 bytes 2, 1 [emitted] abd - cir2.js 299 bytes 3 [emitted] cir2 - main.js 9.09 KiB 4 [emitted] main + main.js 9.09 KiB 1 [emitted] main + ab.js 183 bytes 2 [emitted] ab + abd.js 250 bytes 3, 2 [emitted] abd + cir2.js 299 bytes 4 [emitted] cir2 ac in ab.js 130 bytes 5 [emitted] ac in ab - chunk.js 190 bytes 6, 5 [emitted] chunk -cir2 from cir1.js 359 bytes 7, 3 [emitted] cir2 from cir1 + chunk.js 212 bytes 6, 5 [emitted] chunk +cir2 from cir1.js 359 bytes 7, 4 [emitted] cir2 from cir1 Entrypoint main = main.js -chunk {0} cir1.js (cir1) 81 bytes <{3}> <{4}> >{7}< [rendered] - > [3] ./circular2.js 1:0-79 - > [3] ./circular2.js 1:0-79 - > [8] ./index.js 13:0-54 - [2] ./circular1.js 81 bytes {0} [built] -chunk {1} ab.js (ab) 0 bytes <{4}> >{5}< [rendered] - > [8] ./index.js 1:0-6:8 - [0] ./modules/a.js 0 bytes {1} {2} [built] - [1] ./modules/b.js 0 bytes {1} {2} [built] -chunk {2} abd.js (abd) 0 bytes <{4}> >{6}< [rendered] - > [8] ./index.js 8:0-11:9 - [0] ./modules/a.js 0 bytes {1} {2} [built] - [1] ./modules/b.js 0 bytes {1} {2} [built] - [5] ./modules/d.js 0 bytes {2} {6} [built] -chunk {3} cir2.js (cir2) 81 bytes <{4}> >{0}< [rendered] - > [8] ./index.js 14:0-54 - [3] ./circular2.js 81 bytes {3} {7} [built] -chunk {4} main.js (main) 523 bytes >{0}< >{1}< >{2}< >{3}< [entry] [rendered] +chunk {0} cir1.js (cir1) 81 bytes <{1}> <{4}> >{7}< [rendered] + > [5] ./index.js 13:0-54 + > [7] ./circular2.js 1:0-79 + > [7] ./circular2.js 1:0-79 + [6] ./circular1.js 81 bytes {0} [built] +chunk {1} main.js (main) 523 bytes >{0}< >{2}< >{3}< >{4}< [entry] [rendered] > ./index main - [4] ./modules/f.js 0 bytes {4} [built] - [8] ./index.js 523 bytes {4} [built] -chunk {5} ac in ab.js (ac in ab) 0 bytes <{1}> >{6}< [rendered] - > [8] ./index.js 2:1-5:15 - [6] ./modules/c.js 0 bytes {5} {6} [built] -chunk {6} chunk.js (chunk) 0 bytes <{2}> <{5}> [rendered] - > [8] ./index.js 3:2-4:13 - > [8] ./index.js 9:1-10:12 - [5] ./modules/d.js 0 bytes {2} {6} [built] - [6] ./modules/c.js 0 bytes {5} {6} [built] + [2] ./modules/f.js 0 bytes {1} [built] + [5] ./index.js 523 bytes {1} [built] +chunk {2} ab.js (ab) 0 bytes <{1}> >{5}< [rendered] + > [5] ./index.js 1:0-6:8 + [0] ./modules/a.js 0 bytes {2} {3} [built] + [1] ./modules/b.js 0 bytes {2} {3} [built] +chunk {3} abd.js (abd) 0 bytes <{1}> >{6}< [rendered] + > [5] ./index.js 8:0-11:9 + [0] ./modules/a.js 0 bytes {2} {3} [built] + [1] ./modules/b.js 0 bytes {2} {3} [built] + [3] ./modules/d.js 0 bytes {3} {6} [built] +chunk {4} cir2.js (cir2) 81 bytes <{1}> >{0}< [rendered] + > [5] ./index.js 14:0-54 + [7] ./circular2.js 81 bytes {4} {7} [built] +chunk {5} ac in ab.js (ac in ab) 0 bytes <{2}> >{6}< [rendered] + > [5] ./index.js 2:1-5:15 + [4] ./modules/c.js 0 bytes {5} {6} [built] +chunk {6} chunk.js (chunk) 0 bytes <{3}> <{5}> [rendered] + > [5] ./index.js 3:2-4:13 + > [5] ./index.js 9:1-10:12 + [3] ./modules/d.js 0 bytes {3} {6} [built] + [4] ./modules/c.js 0 bytes {5} {6} [built] chunk {7} cir2 from cir1.js (cir2 from cir1) 81 bytes <{0}> [rendered] - > [2] ./circular1.js 1:0-79 - > [2] ./circular1.js 1:0-79 - [3] ./circular2.js 81 bytes {3} {7} [built] - [7] ./modules/e.js 0 bytes {7} [built]" + > [6] ./circular1.js 1:0-79 + > [6] ./circular1.js 1:0-79 + [7] ./circular2.js 81 bytes {4} {7} [built] + [8] ./modules/e.js 0 bytes {7} [built]" `; exports[`StatsTestCases should print correct stats for parse-error 1`] = ` @@ -1679,34 +1679,34 @@ exports[`StatsTestCases should print correct stats for performance-disabled 1`] "Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 301 KiB 2 [emitted] main - 3.js 227 bytes 3 [emitted] +main.js 301 KiB 0 [emitted] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main = main.js -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 52 bytes {2} [built] -[5] ./a.js 293 KiB {2} [built]" +[0] ./index.js 52 bytes {0} [built] +[1] ./a.js 293 KiB {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for performance-error 1`] = ` "Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 301 KiB 2 [emitted] [big] main - 3.js 227 bytes 3 [emitted] +main.js 301 KiB 0 [emitted] [big] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main [big] = main.js -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 52 bytes {2} [built] -[5] ./a.js 293 KiB {2} [built] +[0] ./index.js 52 bytes {0} [built] +[1] ./a.js 293 KiB {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built] ERROR in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). This can impact web performance. @@ -1755,17 +1755,17 @@ exports[`StatsTestCases should print correct stats for performance-no-hints 1`] "Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 301 KiB 2 [emitted] [big] main - 3.js 227 bytes 3 [emitted] +main.js 301 KiB 0 [emitted] [big] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main [big] = main.js -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 52 bytes {2} [built] -[5] ./a.js 293 KiB {2} [built]" +[0] ./index.js 52 bytes {0} [built] +[1] ./a.js 293 KiB {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for performance-oversize-limit-error 1`] = ` @@ -1801,85 +1801,85 @@ For more info visit https://webpack.js.org/guides/code-splitting/" exports[`StatsTestCases should print correct stats for prefetch 1`] = ` " Asset Size Chunks Chunk Names - prefetched.js 475 bytes 0 [emitted] prefetched - normal.js 130 bytes 1 [emitted] normal -prefetched2.js 127 bytes 2 [emitted] prefetched2 -prefetched3.js 130 bytes 3 [emitted] prefetched3 - main.js 9.66 KiB 4 [emitted] main - inner.js 136 bytes 5 [emitted] inner - inner2.js 201 bytes 6 [emitted] inner2 + main.js 9.66 KiB 0 [emitted] main + prefetched.js 475 bytes 1 [emitted] prefetched + normal.js 130 bytes 2 [emitted] normal +prefetched2.js 127 bytes 3 [emitted] prefetched2 +prefetched3.js 130 bytes 4 [emitted] prefetched3 + inner.js 130 bytes 5 [emitted] inner + inner2.js 188 bytes 6 [emitted] inner2 Entrypoint main = main.js (prefetch: prefetched2.js prefetched.js prefetched3.js) -chunk {0} prefetched.js (prefetched) 228 bytes <{4}> >{5}< >{6}< (prefetch: {6} {5}) [rendered] -chunk {1} normal.js (normal) 0 bytes <{4}> [rendered] -chunk {2} prefetched2.js (prefetched2) 0 bytes <{4}> [rendered] -chunk {3} prefetched3.js (prefetched3) 0 bytes <{4}> [rendered] -chunk {4} main.js (main) 436 bytes >{0}< >{1}< >{2}< >{3}< (prefetch: {2} {0} {3}) [entry] [rendered] -chunk {5} inner.js (inner) 0 bytes <{0}> [rendered] -chunk {6} inner2.js (inner2) 0 bytes <{0}> [rendered]" +chunk {0} main.js (main) 436 bytes >{1}< >{2}< >{3}< >{4}< (prefetch: {3} {1} {4}) [entry] [rendered] +chunk {1} prefetched.js (prefetched) 228 bytes <{0}> >{5}< >{6}< (prefetch: {6} {5}) [rendered] +chunk {2} normal.js (normal) 0 bytes <{0}> [rendered] +chunk {3} prefetched2.js (prefetched2) 0 bytes <{0}> [rendered] +chunk {4} prefetched3.js (prefetched3) 0 bytes <{0}> [rendered] +chunk {5} inner.js (inner) 0 bytes <{1}> [rendered] +chunk {6} inner2.js (inner2) 0 bytes <{1}> [rendered]" `; exports[`StatsTestCases should print correct stats for prefetch-preload-mixed 1`] = ` -"chunk {0} a.js (a) 136 bytes <{3}> >{4}< >{5}< (prefetch: {4} {5}) [rendered] -chunk {1} b.js (b) 203 bytes <{3}> >{6}< >{7}< >{8}< (prefetch: {6} {8}) (preload: {7}) [rendered] -chunk {2} c.js (c) 134 bytes <{3}> >{9}< >{10}< (preload: {9} {10}) [rendered] -chunk {3} main.js (main) 195 bytes >{0}< >{1}< >{2}< (prefetch: {0} {1} {2}) [entry] [rendered] -chunk {4} a1.js (a1) 0 bytes <{0}> [rendered] -chunk {5} a2.js (a2) 0 bytes <{0}> [rendered] -chunk {6} b1.js (b1) 0 bytes <{1}> [rendered] -chunk {7} b2.js (b2) 0 bytes <{1}> [rendered] -chunk {8} b3.js (b3) 0 bytes <{1}> [rendered] -chunk {9} c1.js (c1) 0 bytes <{2}> [rendered] -chunk {10} c2.js (c2) 0 bytes <{2}> [rendered]" +"chunk {0} main.js (main) 195 bytes >{1}< >{2}< >{3}< (prefetch: {1} {2} {3}) [entry] [rendered] +chunk {1} a.js (a) 136 bytes <{0}> >{4}< >{5}< (prefetch: {4} {5}) [rendered] +chunk {2} b.js (b) 203 bytes <{0}> >{6}< >{7}< >{8}< (prefetch: {6} {8}) (preload: {7}) [rendered] +chunk {3} c.js (c) 134 bytes <{0}> >{9}< >{10}< (preload: {9} {10}) [rendered] +chunk {4} a1.js (a1) 0 bytes <{1}> [rendered] +chunk {5} a2.js (a2) 0 bytes <{1}> [rendered] +chunk {6} b1.js (b1) 0 bytes <{2}> [rendered] +chunk {7} b2.js (b2) 0 bytes <{2}> [rendered] +chunk {8} b3.js (b3) 0 bytes <{2}> [rendered] +chunk {9} c1.js (c1) 0 bytes <{3}> [rendered] +chunk {10} c2.js (c2) 0 bytes <{3}> [rendered]" `; exports[`StatsTestCases should print correct stats for preload 1`] = ` " Asset Size Chunks Chunk Names - preloaded.js 467 bytes 0 [emitted] preloaded - normal.js 130 bytes 1 [emitted] normal -preloaded2.js 127 bytes 2 [emitted] preloaded2 -preloaded3.js 130 bytes 3 [emitted] preloaded3 - main.js 9.86 KiB 4 [emitted] main - inner.js 136 bytes 5 [emitted] inner - inner2.js 201 bytes 6 [emitted] inner2 + main.js 9.87 KiB 0 [emitted] main + preloaded.js 467 bytes 1 [emitted] preloaded + normal.js 130 bytes 2 [emitted] normal +preloaded2.js 127 bytes 3 [emitted] preloaded2 +preloaded3.js 130 bytes 4 [emitted] preloaded3 + inner.js 130 bytes 5 [emitted] inner + inner2.js 188 bytes 6 [emitted] inner2 Entrypoint main = main.js (preload: preloaded2.js preloaded.js preloaded3.js) -chunk {0} preloaded.js (preloaded) 226 bytes <{4}> >{5}< >{6}< (preload: {6} {5}) [rendered] -chunk {1} normal.js (normal) 0 bytes <{4}> [rendered] -chunk {2} preloaded2.js (preloaded2) 0 bytes <{4}> [rendered] -chunk {3} preloaded3.js (preloaded3) 0 bytes <{4}> [rendered] -chunk {4} main.js (main) 424 bytes >{0}< >{1}< >{2}< >{3}< (preload: {2} {0} {3}) [entry] [rendered] -chunk {5} inner.js (inner) 0 bytes <{0}> [rendered] -chunk {6} inner2.js (inner2) 0 bytes <{0}> [rendered]" +chunk {0} main.js (main) 424 bytes >{1}< >{2}< >{3}< >{4}< (preload: {3} {1} {4}) [entry] [rendered] +chunk {1} preloaded.js (preloaded) 226 bytes <{0}> >{5}< >{6}< (preload: {6} {5}) [rendered] +chunk {2} normal.js (normal) 0 bytes <{0}> [rendered] +chunk {3} preloaded2.js (preloaded2) 0 bytes <{0}> [rendered] +chunk {4} preloaded3.js (preloaded3) 0 bytes <{0}> [rendered] +chunk {5} inner.js (inner) 0 bytes <{1}> [rendered] +chunk {6} inner2.js (inner2) 0 bytes <{1}> [rendered]" `; exports[`StatsTestCases should print correct stats for preset-detailed 1`] = ` -"Hash: d0fce43b3c0175d4cc8a +"Hash: 437c9384ca68c9e15b6c Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 8.29 KiB 2 [emitted] main - 3.js 227 bytes 3 [emitted] +main.js 8.29 KiB 0 [emitted] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main = main.js -chunk {0} 0.js 22 bytes <{2}> [rendered] - > ./b [4] ./index.js 2:0-16 -chunk {1} 1.js 54 bytes <{2}> >{3}< [rendered] - > ./c [4] ./index.js 3:0-16 -chunk {2} main.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] +chunk {0} main.js (main) 73 bytes >{1}< >{2}< [entry] [rendered] > ./index main -chunk {3} 3.js 44 bytes <{1}> [rendered] +chunk {1} 1.js 22 bytes <{0}> [rendered] + > ./b [0] ./index.js 2:0-16 +chunk {2} 2.js 54 bytes <{0}> >{3}< [rendered] + > ./c [0] ./index.js 3:0-16 +chunk {3} 3.js 44 bytes <{2}> [rendered] > [3] ./c.js 1:0-52 -[0] ./d.js 22 bytes {3} [depth 2] [built] +[0] ./index.js 51 bytes {0} [depth 0] [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[1] ./e.js 22 bytes {3} [depth 2] [built] +[1] ./a.js 22 bytes {0} [depth 1] [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[2] ./b.js 22 bytes {0} [depth 1] [built] +[2] ./b.js 22 bytes {1} [depth 1] [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[3] ./c.js 54 bytes {1} [depth 1] [built] +[3] ./c.js 54 bytes {2} [depth 1] [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[4] ./index.js 51 bytes {2} [depth 0] [built] +[4] ./d.js 22 bytes {3} [depth 2] [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[5] ./a.js 22 bytes {2} [depth 1] [built] +[5] ./e.js 22 bytes {3} [depth 2] [built] ModuleConcatenation bailout: Module is not an ECMAScript module" `; @@ -1911,38 +1911,38 @@ exports[`StatsTestCases should print correct stats for preset-none-array 1`] = ` exports[`StatsTestCases should print correct stats for preset-none-error 1`] = `""`; exports[`StatsTestCases should print correct stats for preset-normal 1`] = ` -"Hash: d0fce43b3c0175d4cc8a +"Hash: 437c9384ca68c9e15b6c Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 8.29 KiB 2 [emitted] main - 3.js 227 bytes 3 [emitted] +main.js 8.29 KiB 0 [emitted] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main = main.js -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 51 bytes {2} [built] -[5] ./a.js 22 bytes {2} [built]" +[0] ./index.js 51 bytes {0} [built] +[1] ./a.js 22 bytes {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for preset-normal-performance 1`] = ` "Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 301 KiB 2 [emitted] [big] main - 3.js 227 bytes 3 [emitted] +main.js 301 KiB 0 [emitted] [big] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main [big] = main.js -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 52 bytes {2} [built] -[5] ./a.js 293 KiB {2} [built] +[0] ./index.js 52 bytes {0} [built] +[1] ./a.js 293 KiB {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built] WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). This can impact web performance. @@ -1960,21 +1960,21 @@ exports[`StatsTestCases should print correct stats for preset-normal-performance "Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 182 bytes 0 [emitted] - 1.js 319 bytes 1 [emitted] - main.js 301 KiB 2 [emitted] [big] main - 3.js 257 bytes 3 [emitted] - 0.js.map 156 bytes 0 [emitted] - 1.js.map 197 bytes 1 [emitted] -main.js.map 1.72 MiB 2 [emitted] main - 3.js.map 214 bytes 3 [emitted] + main.js 301 KiB 0 [emitted] [big] main + 1.js 182 bytes 1 [emitted] + 2.js 319 bytes 2 [emitted] + 3.js 262 bytes 3 [emitted] +main.js.map 1.72 MiB 0 [emitted] main + 1.js.map 156 bytes 1 [emitted] + 2.js.map 197 bytes 2 [emitted] + 3.js.map 216 bytes 3 [emitted] Entrypoint main [big] = main.js main.js.map -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 52 bytes {2} [built] -[5] ./a.js 293 KiB {2} [built] +[0] ./index.js 52 bytes {0} [built] +[1] ./a.js 293 KiB {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built] WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). This can impact web performance. @@ -1989,47 +1989,47 @@ Entrypoints: `; exports[`StatsTestCases should print correct stats for preset-verbose 1`] = ` -"Hash: d0fce43b3c0175d4cc8a +"Hash: 437c9384ca68c9e15b6c Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 8.29 KiB 2 [emitted] main - 3.js 227 bytes 3 [emitted] +main.js 8.29 KiB 0 [emitted] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main = main.js -chunk {0} 0.js 22 bytes <{2}> [rendered] - > ./b [4] ./index.js 2:0-16 - [2] ./b.js 22 bytes {0} [depth 1] [built] - ModuleConcatenation bailout: Module is not an ECMAScript module - amd require ./b [4] ./index.js 2:0-16 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {1} 1.js 54 bytes <{2}> >{3}< [rendered] - > ./c [4] ./index.js 3:0-16 - [3] ./c.js 54 bytes {1} [depth 1] [built] - ModuleConcatenation bailout: Module is not an ECMAScript module - amd require ./c [4] ./index.js 3:0-16 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {2} main.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] +chunk {0} main.js (main) 73 bytes >{1}< >{2}< [entry] [rendered] > ./index main - [4] ./index.js 51 bytes {2} [depth 0] [built] + [0] ./index.js 51 bytes {0} [depth 0] [built] ModuleConcatenation bailout: Module is not an ECMAScript module single entry ./index main factory:Xms building:Xms = Xms - [5] ./a.js 22 bytes {2} [depth 1] [built] + [1] ./a.js 22 bytes {0} [depth 1] [built] + ModuleConcatenation bailout: Module is not an ECMAScript module + cjs require ./a [0] ./index.js 1:0-14 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {1} 1.js 22 bytes <{0}> [rendered] + > ./b [0] ./index.js 2:0-16 + [2] ./b.js 22 bytes {1} [depth 1] [built] + ModuleConcatenation bailout: Module is not an ECMAScript module + amd require ./b [0] ./index.js 2:0-16 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {2} 2.js 54 bytes <{0}> >{3}< [rendered] + > ./c [0] ./index.js 3:0-16 + [3] ./c.js 54 bytes {2} [depth 1] [built] ModuleConcatenation bailout: Module is not an ECMAScript module - cjs require ./a [4] ./index.js 1:0-14 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {3} 3.js 44 bytes <{1}> [rendered] + amd require ./c [0] ./index.js 3:0-16 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {3} 3.js 44 bytes <{2}> [rendered] > [3] ./c.js 1:0-52 - [0] ./d.js 22 bytes {3} [depth 2] [built] + [4] ./d.js 22 bytes {3} [depth 2] [built] ModuleConcatenation bailout: Module is not an ECMAScript module require.ensure item ./d [3] ./c.js 1:0-52 - [4] Xms -> [3] Xms -> factory:Xms building:Xms = Xms - [1] ./e.js 22 bytes {3} [depth 2] [built] + [0] Xms -> [3] Xms -> factory:Xms building:Xms = Xms + [5] ./e.js 22 bytes {3} [depth 2] [built] ModuleConcatenation bailout: Module is not an ECMAScript module require.ensure item ./e [3] ./c.js 1:0-52 - [4] Xms -> [3] Xms -> factory:Xms building:Xms = Xms" + [0] Xms -> [3] Xms -> factory:Xms building:Xms = Xms" `; exports[`StatsTestCases should print correct stats for resolve-plugin-context 1`] = ` @@ -2084,26 +2084,26 @@ Entrypoint e2 = runtime~e2.js e2.js" exports[`StatsTestCases should print correct stats for runtime-chunk-integration 1`] = ` "Child base: Asset Size Chunks Chunk Names - 0.js 719 bytes 0 [emitted] - main1.js 542 bytes 1 [emitted] main1 + 0.js 728 bytes 0 [emitted] + main1.js 539 bytes 1 [emitted] main1 runtime.js 8.75 KiB 2 [emitted] runtime Entrypoint main1 = runtime.js main1.js - [0] ./b.js 20 bytes {0} [built] - [1] ./c.js 20 bytes {0} [built] - [2] ./d.js 20 bytes {0} [built] - [3] ./main1.js 66 bytes {1} [built] + [0] ./main1.js 66 bytes {1} [built] + [1] ./b.js 20 bytes {0} [built] + [2] ./c.js 20 bytes {0} [built] + [3] ./d.js 20 bytes {0} [built] Child manifest is named entry: Asset Size Chunks Chunk Names - 0.js 719 bytes 0 [emitted] + 0.js 737 bytes 0 [emitted] manifest.js 9.06 KiB 1 [emitted] manifest - main1.js 542 bytes 2 [emitted] main1 + main1.js 539 bytes 2 [emitted] main1 Entrypoint main1 = manifest.js main1.js Entrypoint manifest = manifest.js - [0] ./b.js 20 bytes {0} [built] - [1] ./c.js 20 bytes {0} [built] - [2] ./d.js 20 bytes {0} [built] - [3] ./main1.js 66 bytes {2} [built] - [4] ./f.js 20 bytes {1} [built]" + [0] ./main1.js 66 bytes {2} [built] + [1] ./f.js 20 bytes {1} [built] + [2] ./b.js 20 bytes {0} [built] + [3] ./c.js 20 bytes {0} [built] + [4] ./d.js 20 bytes {0} [built]" `; exports[`StatsTestCases should print correct stats for runtime-chunk-issue-7382 1`] = ` @@ -2117,131 +2117,131 @@ Entrypoint e2 = runtime.js e2.js" `; exports[`StatsTestCases should print correct stats for scope-hoisting-bailouts 1`] = ` -"Hash: 900e01719757ad40b4ee +"Hash: 38ac43ee32f96265a6e0 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint index = index.js Entrypoint entry = entry.js -[0] ./entry.js 32 bytes {1} {2} [built] +[0] ./entry.js 32 bytes {0} {1} [built] ModuleConcatenation bailout: Module is an entry point -[1] ./ref-from-cjs.js 45 bytes {1} [built] +[1] ./ref-from-cjs.js 45 bytes {0} [built] ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./cjs.js (referenced with cjs require) -[2] external \\"external\\" 42 bytes {1} [built] - ModuleConcatenation bailout: Module is not an ECMAScript module -[3] ./concatenated.js + 2 modules 116 bytes {0} [built] - ModuleConcatenation bailout: Cannot concat with external \\"external\\" (<- Module is not an ECMAScript module) - | ./concatenated.js 26 bytes [built] - | ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./index.js (referenced with import()) - | ./concatenated1.js 37 bytes [built] - | ./concatenated2.js 48 bytes [built] -[4] ./index.js 176 bytes {1} [built] +[2] ./index.js 176 bytes {0} [built] ModuleConcatenation bailout: Module is an entry point -[5] ./cjs.js 59 bytes {1} [built] +[3] ./cjs.js 59 bytes {0} [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[6] ./eval.js 35 bytes {1} [built] +[4] ./eval.js 35 bytes {0} [built] ModuleConcatenation bailout: Module uses eval() -[7] ./injected-vars.js 40 bytes {1} [built] +[5] ./injected-vars.js 40 bytes {0} [built] ModuleConcatenation bailout: Module uses injected variables (__dirname, __filename) -[8] ./module-id.js 26 bytes {1} [built] +[6] ./module-id.js 26 bytes {0} [built] ModuleConcatenation bailout: Module uses module.id -[9] ./module-loaded.js 30 bytes {1} [built] - ModuleConcatenation bailout: Module uses module.loaded" +[7] ./module-loaded.js 30 bytes {0} [built] + ModuleConcatenation bailout: Module uses module.loaded +[8] external \\"external\\" 42 bytes {0} [built] + ModuleConcatenation bailout: Module is not an ECMAScript module +[9] ./concatenated.js + 2 modules 116 bytes {2} [built] + ModuleConcatenation bailout: Cannot concat with external \\"external\\" (<- Module is not an ECMAScript module) + | ./concatenated.js 26 bytes [built] + | ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./index.js (referenced with import()) + | ./concatenated1.js 37 bytes [built] + | ./concatenated2.js 48 bytes [built]" `; exports[`StatsTestCases should print correct stats for scope-hoisting-multi 1`] = ` -"Hash: 4fe44d37d6d451751f0a83f3311f89e78104b088 +"Hash: 62dc20c341a326c0983423541003173315bf485b Child - Hash: 4fe44d37d6d451751f0a + Hash: 62dc20c341a326c09834 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint first = vendor.js first.js Entrypoint second = vendor.js second.js - [0] ./common_lazy_shared.js 25 bytes {0} {1} {2} [built] - [1] ./common2.js 25 bytes {4} {5} [built] - [2] ./common_lazy.js 25 bytes {1} {2} [built] - [3] ./common.js 37 bytes {4} {5} [built] - [4] ./lazy_shared.js 31 bytes {0} [built] - [5] ./vendor.js 25 bytes {3} [built] - [6] ./lazy_first.js 55 bytes {1} [built] - [7] ./lazy_second.js 55 bytes {2} [built] - [8] ./first.js 207 bytes {4} [built] - [9] ./module_first.js 31 bytes {4} [built] - [10] ./second.js 177 bytes {5} [built] + [0] ./common2.js 25 bytes {1} {2} [built] + [1] ./common.js 37 bytes {1} {2} [built] + [2] ./vendor.js 25 bytes {0} [built] + [3] ./lazy_shared.js 31 bytes {4} [built] + [4] ./first.js 207 bytes {1} [built] + [5] ./module_first.js 31 bytes {1} [built] + [6] ./second.js 177 bytes {2} [built] + [7] ./lazy_first.js 55 bytes {3} [built] + [8] ./lazy_second.js 55 bytes {5} [built] + [9] ./common_lazy_shared.js 25 bytes {3} {4} {5} [built] + [10] ./common_lazy.js 25 bytes {3} {5} [built] Child - Hash: 83f3311f89e78104b088 + Hash: 23541003173315bf485b Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint first = vendor.js first.js Entrypoint second = vendor.js second.js - [0] ./common_lazy_shared.js 25 bytes {0} {1} {2} [built] - [1] ./common_lazy.js 25 bytes {1} {2} [built] - [2] ./common.js + 1 modules 62 bytes {4} {5} [built] + [0] ./common.js + 1 modules 62 bytes {1} {2} [built] | ./common.js 37 bytes [built] | ./common2.js 25 bytes [built] - [3] ./vendor.js 25 bytes {3} [built] - [4] ./lazy_shared.js 31 bytes {0} [built] - ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./first.js (referenced with import()), ./second.js (referenced with import()) - [5] ./lazy_second.js 55 bytes {2} [built] - ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./second.js (referenced with import()) - [6] ./second.js 177 bytes {5} [built] + [1] ./vendor.js 25 bytes {0} [built] + [2] ./second.js 177 bytes {2} [built] ModuleConcatenation bailout: Module is an entry point - [7] ./first.js + 1 modules 248 bytes {4} [built] + [3] ./common_lazy_shared.js 25 bytes {3} {4} {5} [built] + [4] ./common_lazy.js 25 bytes {3} {5} [built] + [5] ./lazy_shared.js 31 bytes {4} [built] + ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./first.js (referenced with import()), ./second.js (referenced with import()) + [6] ./first.js + 1 modules 248 bytes {1} [built] ModuleConcatenation bailout: Cannot concat with ./common.js ModuleConcatenation bailout: Cannot concat with ./vendor.js | ./first.js 207 bytes [built] | ModuleConcatenation bailout: Module is an entry point | ./module_first.js 31 bytes [built] - [8] ./lazy_first.js 55 bytes {1} [built] + [7] ./lazy_second.js 55 bytes {5} [built] + ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./second.js (referenced with import()) + [8] ./lazy_first.js 55 bytes {3} [built] ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./first.js (referenced with import())" `; exports[`StatsTestCases should print correct stats for side-effects-issue-7428 1`] = ` -"Hash: a9b58d04269fe092c240 +"Hash: 4981ff1831c58ef47c99 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 481 bytes 0 [emitted] -main.js 9.32 KiB 1 [emitted] main +main.js 9.35 KiB 0 [emitted] main + 1.js 481 bytes 1 [emitted] Entrypoint main = main.js -[0] ./components/src/CompAB/utils.js 97 bytes {1} [built] - harmony side effect evaluation ./utils [1] ./main.js + 1 modules 1:0-30 - harmony import specifier ./utils [1] ./main.js + 1 modules 5:2-5 +[0] ./components/src/CompAB/index.js 87 bytes [built] + [no exports used] + harmony side effect evaluation ./CompAB [3] ./components/src/index.js 1:0-40 + harmony export imported specifier ./CompAB [3] ./components/src/index.js 1:0-40 + harmony export imported specifier ./CompAB [3] ./components/src/index.js 1:0-40 +[1] ./components/src/CompC/CompC.js 33 bytes [built] + [no exports used] + harmony side effect evaluation ./CompC [2] ./components/src/CompC/index.js 1:0-34 + harmony export imported specifier ./CompC [2] ./components/src/CompC/index.js 1:0-34 +[2] ./components/src/CompC/index.js 34 bytes [built] + [no exports used] + harmony side effect evaluation ./CompC [3] ./components/src/index.js 2:0-43 + harmony export imported specifier ./CompC [3] ./components/src/index.js 2:0-43 +[3] ./components/src/index.js 84 bytes [built] + [no exports used] + harmony side effect evaluation ./components [6] ./foo.js 1:0-37 + harmony side effect evaluation ./components [7] ./main.js + 1 modules 1:0-44 +[4] ./components/src/CompAB/CompA.js 89 bytes {0} [built] + [only some exports used: default] + harmony side effect evaluation ./CompA [0] ./components/src/CompAB/index.js 1:0-43 + harmony export imported specifier ./CompA [0] ./components/src/CompAB/index.js 1:0-43 + harmony import specifier ./components ./main.js 3:15-20 (skipped side-effect-free modules) + harmony import specifier ./components [6] ./foo.js 3:20-25 (skipped side-effect-free modules) +[5] ./components/src/CompAB/utils.js 97 bytes {0} [built] harmony side effect evaluation ./utils [4] ./components/src/CompAB/CompA.js 1:0-35 harmony import specifier ./utils [4] ./components/src/CompAB/CompA.js 5:5-12 -[1] ./main.js + 1 modules 231 bytes {1} [built] + harmony side effect evaluation ./utils [7] ./main.js + 1 modules 1:0-30 + harmony import specifier ./utils [7] ./main.js + 1 modules 5:2-5 +[6] ./foo.js 101 bytes {1} [built] + import() ./foo ./main.js 6:0-15 +[7] ./main.js + 1 modules 231 bytes {0} [built] single entry ./main.js main | ./main.js 144 bytes [built] | single entry ./main.js main | ./components/src/CompAB/CompB.js 77 bytes [built] | [only some exports used: default] - | harmony side effect evaluation ./CompB [7] ./components/src/CompAB/index.js 2:0-43 - | harmony export imported specifier ./CompB [7] ./components/src/CompAB/index.js 2:0-43 - | harmony import specifier ./components ./main.js 4:15-20 (skipped side-effect-free modules) -[2] ./components/src/index.js 84 bytes [built] - [no exports used] - harmony side effect evaluation ./components [1] ./main.js + 1 modules 1:0-44 - harmony side effect evaluation ./components [3] ./foo.js 1:0-37 -[3] ./foo.js 101 bytes {0} [built] - import() ./foo ./main.js 6:0-15 -[4] ./components/src/CompAB/CompA.js 89 bytes {1} [built] - [only some exports used: default] - harmony import specifier ./components ./main.js 3:15-20 (skipped side-effect-free modules) - harmony import specifier ./components [3] ./foo.js 3:20-25 (skipped side-effect-free modules) - harmony side effect evaluation ./CompA [7] ./components/src/CompAB/index.js 1:0-43 - harmony export imported specifier ./CompA [7] ./components/src/CompAB/index.js 1:0-43 -[5] ./components/src/CompC/index.js 34 bytes [built] - [no exports used] - harmony side effect evaluation ./CompC [2] ./components/src/index.js 2:0-43 - harmony export imported specifier ./CompC [2] ./components/src/index.js 2:0-43 -[6] ./components/src/CompC/CompC.js 33 bytes [built] - [no exports used] - harmony side effect evaluation ./CompC [5] ./components/src/CompC/index.js 1:0-34 - harmony export imported specifier ./CompC [5] ./components/src/CompC/index.js 1:0-34 -[7] ./components/src/CompAB/index.js 87 bytes [built] - [no exports used] - harmony side effect evaluation ./CompAB [2] ./components/src/index.js 1:0-40 - harmony export imported specifier ./CompAB [2] ./components/src/index.js 1:0-40 - harmony export imported specifier ./CompAB [2] ./components/src/index.js 1:0-40" + | harmony side effect evaluation ./CompB [0] ./components/src/CompAB/index.js 2:0-43 + | harmony export imported specifier ./CompB [0] ./components/src/CompAB/index.js 2:0-43 + | harmony import specifier ./components ./main.js 4:15-20 (skipped side-effect-free modules)" `; exports[`StatsTestCases should print correct stats for side-effects-simple-unused 1`] = ` @@ -2291,75 +2291,75 @@ exports[`StatsTestCases should print correct stats for split-chunks 1`] = ` Entrypoint a = default/a.js Entrypoint b = default/b.js Entrypoint c = default/c.js - chunk {0} default/vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= >{2}< >{7}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) + chunk {0} default/vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{4}> ={1}= ={2}= ={3}= ={8}= ={9}= ={10}= ={12}= >{2}< >{11}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= >{2}< >{7}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{4}> ={0}= ={2}= ={3}= ={8}= ={9}= ={10}= ={12}= >{2}< >{11}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{4}> <{9}> <{10}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{4}> <{5}> <{8}> ={0}= ={1}= ={3}= ={9}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={4}= ={5}= >{2}< >{7}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) + [2] ./f.js 20 bytes {2} {6} {7} [built] + chunk {3} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{4}> ={0}= ={1}= ={2}= ={8}= ={9}= >{2}< >{11}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - chunk {4} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{7}< [rendered] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + chunk {4} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{8}< >{9}< >{10}< >{12}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {4} [built] + chunk {5} default/a.js (a) 216 bytes >{2}< >{11}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + [6] ./a.js + 1 modules 156 bytes {5} {8} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {6} default/b.js (b) 152 bytes [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {2} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + [4] ./b.js 72 bytes {6} {9} [built] + chunk {7} default/c.js (c) 152 bytes [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {2} {6} {7} [built] + [5] ./c.js 72 bytes {7} {10} [built] + [7] ./node_modules/z.js 20 bytes {7} {12} [built] + chunk {8} default/async-a.js (async-a) 156 bytes <{4}> ={0}= ={1}= ={3}= >{2}< >{11}< [rendered] > ./a [8] ./index.js 1:0-47 - [7] ./a.js + 1 modules 156 bytes {4} {10} [built] + [6] ./a.js + 1 modules 156 bytes {5} {8} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {5} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {9} default/async-b.js (async-b) 72 bytes <{4}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [5] ./b.js 72 bytes {5} {11} [built] - chunk {6} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={8}= [rendered] + [4] ./b.js 72 bytes {6} {9} [built] + chunk {10} default/async-c.js (async-c) 72 bytes <{4}> ={0}= ={1}= ={2}= ={12}= [rendered] > ./c [8] ./index.js 3:0-47 - [6] ./c.js 72 bytes {6} {12} [built] - chunk {7} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{4}> <{10}> ={2}= [rendered] + [5] ./c.js 72 bytes {7} {10} [built] + chunk {11} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{8}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [9] ./g.js 34 bytes {7} [built] - chunk {8} default/vendors~async-c.js (vendors~async-c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={6}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) + [9] ./g.js 34 bytes {11} [built] + chunk {12} default/vendors~async-c.js (vendors~async-c) 20 bytes <{4}> ={0}= ={1}= ={2}= ={10}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) > ./c [8] ./index.js 3:0-47 - [4] ./node_modules/z.js 20 bytes {8} {12} [built] - chunk {9} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{8}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 216 bytes >{2}< >{7}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - [7] ./a.js + 1 modules 156 bytes {4} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {11} default/b.js (b) 152 bytes [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [2] ./f.js 20 bytes {2} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - [5] ./b.js 72 bytes {5} {11} [built] - chunk {12} default/c.js (c) 152 bytes [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [2] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./node_modules/z.js 20 bytes {8} {12} [built] - [6] ./c.js 72 bytes {6} {12} [built] + [7] ./node_modules/z.js 20 bytes {7} {12} [built] Child all-chunks: Entrypoint main = default/main.js Entrypoint a = default/vendors~a~async-a~async-b~async-c~b~c.js default/vendors~a~async-a~async-b~b.js default/a.js Entrypoint b = default/vendors~a~async-a~async-b~async-c~b~c.js default/vendors~a~async-a~async-b~b.js default/b.js Entrypoint c = default/vendors~a~async-a~async-b~async-c~b~c.js default/vendors~async-c~c.js default/c.js - chunk {0} default/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) + chunk {0} default/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{5}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) > ./a a > ./b b > ./c c @@ -2367,444 +2367,444 @@ Child all-chunks: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + chunk {1} default/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{5}> ={0}= ={2}= ={3}= ={6}= ={7}= ={9}= ={10}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + > ./a a + > ./b b + > ./a [8] ./index.js 1:0-47 + > ./b [8] ./index.js 2:0-47 + [3] ./node_modules/y.js 20 bytes {1} [built] + chunk {2} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{5}> ={0}= ={1}= ={3}= ={4}= ={9}= ={10}= ={11}= >{3}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{5}> <{9}> <{10}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + chunk {3} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{5}> <{6}> <{9}> ={0}= ={1}= ={2}= ={4}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} default/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={5}= ={6}= ={10}= ={11}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) - > ./a a - > ./b b - > ./a [8] ./index.js 1:0-47 - > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={7}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + [1] ./f.js 20 bytes {3} {7} {8} [built] + chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{5}> ={0}= ={2}= ={3}= ={8}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] - chunk {5} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] + chunk {5} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{9}< >{10}< >{11}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {5} [built] + chunk {6} default/a.js (a) 176 bytes ={0}= ={1}= >{3}< >{12}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {7} default/b.js (b) 112 bytes ={0}= ={1}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {8} default/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {9} default/async-a.js (async-a) 156 bytes <{5}> ={0}= ={1}= ={2}= >{3}< >{12}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {6} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {10} default/async-b.js (async-b) 72 bytes <{5}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {6} {11} [built] - chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {11} default/async-c.js (async-c) 72 bytes <{5}> ={0}= ={2}= ={3}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{10}> ={2}= [rendered] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {12} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{2}> <{6}> <{9}> ={3}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [9] ./g.js 34 bytes {8} [built] - chunk {9} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 176 bytes ={0}= ={3}= >{2}< >{8}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {11} default/b.js (b) 112 bytes ={0}= ={3}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./b.js 72 bytes {6} {11} [built] - chunk {12} default/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [5] ./c.js 72 bytes {7} {12} [built] + [9] ./g.js 34 bytes {12} [built] Child manual: Entrypoint main = default/main.js Entrypoint a = default/vendors.js default/a.js Entrypoint b = default/vendors.js default/b.js Entrypoint c = default/vendors.js default/c.js - chunk {0} default/vendors.js (vendors) 112 bytes <{5}> ={1}= ={2}= ={3}= ={6}= ={7}= ={8}= >{4}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + chunk {0} default/vendors.js (vendors) 112 bytes <{1}> ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./a a > ./b b > ./c c > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./node_modules/x.js 20 bytes {0} [built] + [1] ./node_modules/x.js 20 bytes {0} [built] [3] ./node_modules/y.js 20 bytes {0} [built] [6] ./node_modules/z.js 20 bytes {0} [built] [9] multi x y z 52 bytes {0} [built] - chunk {1} default/async-a.js (async-a) 176 bytes <{5}> ={0}= >{4}< [rendered] + chunk {1} default/main.js (main) 147 bytes >{0}< >{5}< >{6}< >{7}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {1} [built] + chunk {2} default/a.js (a) 176 bytes ={0}= >{8}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [7] ./a.js + 1 modules 156 bytes {2} {5} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {3} default/b.js (b) 112 bytes ={0}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {4} default/c.js (c) 112 bytes ={0}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + chunk {5} default/async-a.js (async-a) 176 bytes <{1}> ={0}= >{8}< [rendered] > ./a [8] ./index.js 1:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {1} {6} [built] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [7] ./a.js + 1 modules 156 bytes {2} {5} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {2} default/async-b.js (async-b) 112 bytes <{5}> ={0}= [rendered] + chunk {6} default/async-b.js (async-b) 112 bytes <{1}> ={0}= [rendered] > ./b [8] ./index.js 2:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {2} {7} [built] - chunk {3} default/async-c.js (async-c) 112 bytes <{5}> ={0}= [rendered] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {7} default/async-c.js (async-c) 112 bytes <{1}> ={0}= [rendered] > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {3} {8} [built] - chunk {4} default/async-g.js (async-g) 54 bytes <{0}> <{1}> <{6}> [rendered] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + chunk {8} default/async-g.js (async-g) 54 bytes <{0}> <{2}> <{5}> [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [10] ./g.js 34 bytes {4} [built] - chunk {5} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {5} [built] - chunk {6} default/a.js (a) 176 bytes ={0}= >{4}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {1} {6} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {7} default/b.js (b) 112 bytes ={0}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {2} {7} [built] - chunk {8} default/c.js (c) 112 bytes ={0}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {3} {8} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [10] ./g.js 34 bytes {8} [built] Child name-too-long: Entrypoint main = main.js Entrypoint aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js async-a.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js Entrypoint bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js async-b.js bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js Entrypoint cccccccccccccccccccccccccccccc = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js vendors~async-c~cccccccccccccccccccccccccccccc.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js async-c.js cccccccccccccccccccccccccccccc.js - chunk {0} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) + chunk {0} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) 20 bytes <{8}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={9}= ={10}= ={11}= >{2}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./c cccccccccccccccccccccccccccccc > ./a [4] ./index.js 1:0-47 > ./b [4] ./index.js 2:0-47 > ./c [4] ./index.js 3:0-47 - [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: default) (name: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) + [1] ./node_modules/x.js 20 bytes {0} [built] + chunk {1} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) 20 bytes <{8}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={9}= ={10}= ={11}= >{2}< >{12}< [initial] [rendered] split chunk (cache group: default) (name: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./c cccccccccccccccccccccccccccccc > ./a [4] ./index.js 1:0-47 > ./b [4] ./index.js 2:0-47 > ./c [4] ./index.js 3:0-47 - [1] ./d.js 20 bytes {1} [built] - chunk {2} async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js (async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) 20 bytes <{0}> <{1}> <{3}> <{4}> <{9}> <{10}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={8}= ={11}= ={12}= [initial] [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) + [0] ./d.js 20 bytes {1} [built] + chunk {2} async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js (async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) 20 bytes <{0}> <{1}> <{3}> <{4}> <{8}> <{9}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= [initial] [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./c cccccccccccccccccccccccccccccc > ./b [4] ./index.js 2:0-47 > ./c [4] ./index.js 3:0-47 - [0] ./f.js 20 bytes {2} [built] - chunk {3} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 20 bytes <{9}> ={0}= ={1}= ={2}= ={4}= ={5}= ={10}= ={11}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + [2] ./f.js 20 bytes {2} [built] + chunk {3} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 20 bytes <{8}> ={0}= ={1}= ={2}= ={4}= ={5}= ={9}= ={10}= >{2}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./a [4] ./index.js 1:0-47 > ./b [4] ./index.js 2:0-47 [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= ={10}= >{2}< >{8}< [initial] [rendered] reused as split chunk (cache group: default) + chunk {4} async-a.js (async-a) 156 bytes <{8}> ={0}= ={1}= ={3}= ={9}= >{2}< >{12}< [initial] [rendered] reused as split chunk (cache group: default) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./a [4] ./index.js 1:0-47 [8] ./a.js + 1 modules 156 bytes {4} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {5} async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= ={11}= [initial] [rendered] reused as split chunk (cache group: default) + chunk {5} async-b.js (async-b) 72 bytes <{8}> ={0}= ={1}= ={2}= ={3}= ={10}= [initial] [rendered] reused as split chunk (cache group: default) > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./b [4] ./index.js 2:0-47 [5] ./b.js 72 bytes {5} [built] - chunk {6} async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={7}= ={12}= [initial] [rendered] reused as split chunk (cache group: default) + chunk {6} async-c.js (async-c) 72 bytes <{8}> ={0}= ={1}= ={2}= ={7}= ={11}= [initial] [rendered] reused as split chunk (cache group: default) > ./c cccccccccccccccccccccccccccccc > ./c [4] ./index.js 3:0-47 [6] ./c.js 72 bytes {6} [built] - chunk {7} vendors~async-c~cccccccccccccccccccccccccccccc.js (vendors~async-c~cccccccccccccccccccccccccccccc) 20 bytes <{9}> ={0}= ={1}= ={2}= ={6}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~cccccccccccccccccccccccccccccc) + chunk {7} vendors~async-c~cccccccccccccccccccccccccccccc.js (vendors~async-c~cccccccccccccccccccccccccccccc) 20 bytes <{8}> ={0}= ={1}= ={2}= ={6}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~cccccccccccccccccccccccccccccc) > ./c cccccccccccccccccccccccccccccc > ./c [4] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {7} [built] - chunk {8} async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{4}> <{10}> ={2}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {8} [built] - chunk {9} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] + chunk {8} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] > ./ main - [4] ./index.js 147 bytes {9} [built] - chunk {10} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) 0 bytes ={0}= ={1}= ={3}= ={4}= >{2}< >{8}< [entry] [rendered] + [4] ./index.js 147 bytes {8} [built] + chunk {9} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) 0 bytes ={0}= ={1}= ={3}= ={4}= >{2}< >{12}< [entry] [rendered] > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - chunk {11} bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 0 bytes ={0}= ={1}= ={2}= ={3}= ={5}= [entry] [rendered] + chunk {10} bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 0 bytes ={0}= ={1}= ={2}= ={3}= ={5}= [entry] [rendered] > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb - chunk {12} cccccccccccccccccccccccccccccc.js (cccccccccccccccccccccccccccccc) 0 bytes ={0}= ={1}= ={2}= ={6}= ={7}= [entry] [rendered] + chunk {11} cccccccccccccccccccccccccccccc.js (cccccccccccccccccccccccccccccc) 0 bytes ={0}= ={1}= ={2}= ={6}= ={7}= [entry] [rendered] > ./c cccccccccccccccccccccccccccccc + chunk {12} async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{4}> <{9}> ={2}= [rendered] + > ./g [] 6:0-47 + > ./g [] 6:0-47 + [9] ./g.js 34 bytes {12} [built] Child custom-chunks-filter: Entrypoint main = default/main.js Entrypoint a = default/a.js Entrypoint b = default/vendors~async-a~async-b~async-c~b~c.js default/vendors~async-a~async-b~b.js default/b.js Entrypoint c = default/vendors~async-a~async-b~async-c~b~c.js default/vendors~async-c~c.js default/c.js - chunk {0} default/vendors~async-a~async-b~async-c~b~c.js (vendors~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={11}= ={12}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c~b~c) + chunk {0} default/vendors~async-a~async-b~async-c~b~c.js (vendors~async-a~async-b~async-c~b~c) 20 bytes <{5}> ={1}= ={2}= ={3}= ={4}= ={7}= ={8}= ={9}= ={10}= ={11}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c~b~c) > ./b b > ./c c > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./node_modules/x.js 20 bytes {0} {10} [built] - chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + [1] ./node_modules/x.js 20 bytes {0} {6} [built] + chunk {1} default/vendors~async-a~async-b~b.js (vendors~async-a~async-b~b) 20 bytes <{5}> ={0}= ={2}= ={3}= ={7}= ={9}= ={10}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~b) + > ./b b + > ./a [8] ./index.js 1:0-47 + > ./b [8] ./index.js 2:0-47 + [3] ./node_modules/y.js 20 bytes {1} {6} [built] + chunk {2} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{5}> ={0}= ={1}= ={3}= ={4}= ={9}= ={10}= ={11}= >{3}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{5}> <{9}> <{10}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + chunk {3} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{5}> <{6}> <{9}> ={0}= ={1}= ={2}= ={4}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} default/vendors~async-a~async-b~b.js (vendors~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={5}= ={6}= ={11}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~b) - > ./b b - > ./a [8] ./index.js 1:0-47 - > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} {10} [built] - chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={7}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + [2] ./f.js 20 bytes {3} {7} {8} [built] + chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{5}> ={0}= ={2}= ={3}= ={8}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] - chunk {5} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] + chunk {5} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{9}< >{10}< >{11}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {5} [built] + chunk {6} default/a.js (a) 216 bytes >{3}< >{12}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./node_modules/x.js 20 bytes {0} {6} [built] + [3] ./node_modules/y.js 20 bytes {1} {6} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {7} default/b.js (b) 112 bytes ={0}= ={1}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [2] ./f.js 20 bytes {3} {7} {8} [built] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {8} default/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [2] ./f.js 20 bytes {3} {7} {8} [built] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {9} default/async-a.js (async-a) 156 bytes <{5}> ={0}= ={1}= ={2}= >{3}< >{12}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {6} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {10} default/async-b.js (async-b) 72 bytes <{5}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {6} {11} [built] - chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {11} default/async-c.js (async-c) 72 bytes <{5}> ={0}= ={2}= ={3}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{10}> ={2}= [rendered] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {12} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{2}> <{6}> <{9}> ={3}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [9] ./g.js 34 bytes {8} [built] - chunk {9} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 216 bytes >{2}< >{8}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [2] ./node_modules/x.js 20 bytes {0} {10} [built] - [3] ./node_modules/y.js 20 bytes {3} {10} [built] - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {11} default/b.js (b) 112 bytes ={0}= ={3}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./b.js 72 bytes {6} {11} [built] - chunk {12} default/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [5] ./c.js 72 bytes {7} {12} [built] + [9] ./g.js 34 bytes {12} [built] Child custom-chunks-filter-in-cache-groups: Entrypoint main = default/main.js Entrypoint a = default/a.js Entrypoint b = default/vendors.js default/b.js Entrypoint c = default/vendors.js default/c.js - chunk {0} default/vendors.js (vendors) 112 bytes <{5}> ={1}= ={2}= ={3}= ={7}= ={8}= >{4}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + chunk {0} default/vendors.js (vendors) 112 bytes <{1}> ={3}= ={4}= ={5}= ={6}= ={7}= >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./b b > ./c c > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./node_modules/x.js 20 bytes {0} {6} [built] - [3] ./node_modules/y.js 20 bytes {0} {6} [built] + [1] ./node_modules/x.js 20 bytes {0} {2} [built] + [2] ./node_modules/y.js 20 bytes {0} {2} [built] [6] ./node_modules/z.js 20 bytes {0} [built] [9] multi x y z 52 bytes {0} [built] - chunk {1} default/async-a.js (async-a) 176 bytes <{5}> ={0}= >{4}< [rendered] + chunk {1} default/main.js (main) 147 bytes >{0}< >{5}< >{6}< >{7}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {1} [built] + chunk {2} default/a.js (a) 216 bytes >{8}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {2} [built] + [2] ./node_modules/y.js 20 bytes {0} {2} [built] + [7] ./a.js + 1 modules 156 bytes {2} {5} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {3} default/b.js (b) 112 bytes ={0}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [3] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {4} default/c.js (c) 112 bytes ={0}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [3] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + chunk {5} default/async-a.js (async-a) 176 bytes <{1}> ={0}= >{8}< [rendered] > ./a [8] ./index.js 1:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {1} {6} [built] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [7] ./a.js + 1 modules 156 bytes {2} {5} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {2} default/async-b.js (async-b) 112 bytes <{5}> ={0}= [rendered] + chunk {6} default/async-b.js (async-b) 112 bytes <{1}> ={0}= [rendered] > ./b [8] ./index.js 2:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {2} {7} [built] - chunk {3} default/async-c.js (async-c) 112 bytes <{5}> ={0}= [rendered] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [3] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {7} default/async-c.js (async-c) 112 bytes <{1}> ={0}= [rendered] > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {3} {8} [built] - chunk {4} default/async-g.js (async-g) 54 bytes <{0}> <{1}> <{6}> [rendered] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [3] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + chunk {8} default/async-g.js (async-g) 54 bytes <{0}> <{2}> <{5}> [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [10] ./g.js 34 bytes {4} [built] - chunk {5} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {5} [built] - chunk {6} default/a.js (a) 216 bytes >{4}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [2] ./node_modules/x.js 20 bytes {0} {6} [built] - [3] ./node_modules/y.js 20 bytes {0} {6} [built] - [7] ./a.js + 1 modules 156 bytes {1} {6} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {7} default/b.js (b) 112 bytes ={0}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {2} {7} [built] - chunk {8} default/c.js (c) 112 bytes ={0}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {3} {8} [built]" + [3] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [10] ./g.js 34 bytes {8} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-automatic-name 1`] = ` "Entrypoint main = main.js -chunk {0} common~async-a~async-b~async-c.js (common~async-a~async-b~async-c) 40 bytes <{7}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= [rendered] split chunk (cache group: vendors) (name: common~async-a~async-b~async-c) - > ./a [8] ./index.js 1:0-47 - > ./b [8] ./index.js 2:0-47 - > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {0} [built] - [1] ./node_modules/x.js 20 bytes {0} [built] -chunk {1} common~async-b~async-c.js (common~async-b~async-c) 20 bytes <{7}> ={0}= ={2}= ={4}= ={5}= ={6}= [rendered] split chunk (cache group: vendors) (name: common~async-b~async-c) - > ./b [8] ./index.js 2:0-47 - > ./c [8] ./index.js 3:0-47 - [3] ./f.js 20 bytes {1} [built] -chunk {2} common~async-a~async-b.js (common~async-a~async-b) 20 bytes <{7}> ={0}= ={1}= ={3}= ={4}= [rendered] split chunk (cache group: vendors) (name: common~async-a~async-b) - > ./a [8] ./index.js 1:0-47 - > ./b [8] ./index.js 2:0-47 - [2] ./node_modules/y.js 20 bytes {2} [built] -chunk {3} async-a.js (async-a) 107 bytes <{7}> ={0}= ={2}= [rendered] - > ./a [8] ./index.js 1:0-47 - [7] ./a.js + 1 modules 107 bytes {3} [built] +chunk {0} common~async-a~async-b~async-c.js (common~async-a~async-b~async-c) 40 bytes <{3}> ={1}= ={2}= ={4}= ={5}= ={6}= ={7}= [rendered] split chunk (cache group: vendors) (name: common~async-a~async-b~async-c) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + > ./c [0] ./index.js 3:0-47 + [4] ./d.js 20 bytes {0} [built] + [5] ./node_modules/x.js 20 bytes {0} [built] +chunk {1} common~async-b~async-c.js (common~async-b~async-c) 20 bytes <{3}> ={0}= ={2}= ={5}= ={6}= ={7}= [rendered] split chunk (cache group: vendors) (name: common~async-b~async-c) + > ./b [0] ./index.js 2:0-47 + > ./c [0] ./index.js 3:0-47 + [7] ./f.js 20 bytes {1} [built] +chunk {2} common~async-a~async-b.js (common~async-a~async-b) 20 bytes <{3}> ={0}= ={1}= ={4}= ={5}= [rendered] split chunk (cache group: vendors) (name: common~async-a~async-b) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + [6] ./node_modules/y.js 20 bytes {2} [built] +chunk {3} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] + > ./ main + [0] ./index.js 147 bytes {3} [built] +chunk {4} async-a.js (async-a) 107 bytes <{3}> ={0}= ={2}= [rendered] + > ./a [0] ./index.js 1:0-47 + [3] ./a.js + 1 modules 107 bytes {4} [built] | ./a.js 72 bytes [built] | ./e.js 20 bytes [built] -chunk {4} async-b.js (async-b) 72 bytes <{7}> ={0}= ={1}= ={2}= [rendered] - > ./b [8] ./index.js 2:0-47 - [5] ./b.js 72 bytes {4} [built] -chunk {5} async-c.js (async-c) 72 bytes <{7}> ={0}= ={1}= ={6}= [rendered] - > ./c [8] ./index.js 3:0-47 - [6] ./c.js 72 bytes {5} [built] -chunk {6} common~async-c.js (common~async-c) 20 bytes <{7}> ={0}= ={1}= ={5}= [rendered] split chunk (cache group: vendors) (name: common~async-c) - > ./c [8] ./index.js 3:0-47 - [4] ./node_modules/z.js 20 bytes {6} [built] -chunk {7} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {7} [built]" +chunk {5} async-b.js (async-b) 72 bytes <{3}> ={0}= ={1}= ={2}= [rendered] + > ./b [0] ./index.js 2:0-47 + [1] ./b.js 72 bytes {5} [built] +chunk {6} async-c.js (async-c) 72 bytes <{3}> ={0}= ={1}= ={7}= [rendered] + > ./c [0] ./index.js 3:0-47 + [2] ./c.js 72 bytes {6} [built] +chunk {7} common~async-c.js (common~async-c) 20 bytes <{3}> ={0}= ={1}= ={6}= [rendered] split chunk (cache group: vendors) (name: common~async-c) + > ./c [0] ./index.js 3:0-47 + [8] ./node_modules/z.js 20 bytes {7} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-combinations 1`] = ` "Entrypoint main = main.js -chunk {0} async-a~async-b.js (async-a~async-b) 134 bytes <{8}> ={1}= ={2}= [rendered] split chunk (cache group: default) (name: async-a~async-b) - > ./a [9] ./index.js 1:0-47 - > ./b [9] ./index.js 2:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [1] ./y.js 67 bytes {0} [built] -chunk {1} async-a.js (async-a) 48 bytes <{8}> ={0}= [rendered] - > ./a [9] ./index.js 1:0-47 - [2] ./a.js 48 bytes {1} [built] -chunk {2} async-b.js (async-b) 48 bytes <{8}> ={0}= [rendered] - > ./b [9] ./index.js 2:0-47 - [3] ./b.js 48 bytes {2} [built] -chunk {3} async-c.js (async-c) 101 bytes <{8}> [rendered] - > ./c [9] ./index.js 3:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [4] ./c.js 34 bytes {3} [built] -chunk {4} async-d.js (async-d) 101 bytes <{8}> [rendered] - > ./d [9] ./index.js 4:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [5] ./d.js 34 bytes {4} [built] -chunk {5} async-e.js (async-e) 101 bytes <{8}> [rendered] - > ./e [9] ./index.js 5:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [6] ./e.js 34 bytes {5} [built] -chunk {6} async-f.js (async-f) 101 bytes <{8}> [rendered] - > ./f [9] ./index.js 6:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [7] ./f.js 34 bytes {6} [built] -chunk {7} async-g.js (async-g) 101 bytes <{8}> [rendered] - > ./g [9] ./index.js 7:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [8] ./g.js 34 bytes {7} [built] -chunk {8} main.js (main) 343 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] +chunk {0} async-a~async-b.js (async-a~async-b) 134 bytes <{1}> ={2}= ={3}= [rendered] split chunk (cache group: default) (name: async-a~async-b) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built] + [9] ./y.js 67 bytes {0} [built] +chunk {1} main.js (main) 343 bytes >{0}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< >{8}< [entry] [rendered] > ./ main - [9] ./index.js 343 bytes {8} [built]" + [0] ./index.js 343 bytes {1} [built] +chunk {2} async-a.js (async-a) 48 bytes <{1}> ={0}= [rendered] + > ./a [0] ./index.js 1:0-47 + [1] ./a.js 48 bytes {2} [built] +chunk {3} async-b.js (async-b) 48 bytes <{1}> ={0}= [rendered] + > ./b [0] ./index.js 2:0-47 + [2] ./b.js 48 bytes {3} [built] +chunk {4} async-c.js (async-c) 101 bytes <{1}> [rendered] + > ./c [0] ./index.js 3:0-47 + [3] ./c.js 34 bytes {4} [built] + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built] +chunk {5} async-d.js (async-d) 101 bytes <{1}> [rendered] + > ./d [0] ./index.js 4:0-47 + [4] ./d.js 34 bytes {5} [built] + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built] +chunk {6} async-e.js (async-e) 101 bytes <{1}> [rendered] + > ./e [0] ./index.js 5:0-47 + [5] ./e.js 34 bytes {6} [built] + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built] +chunk {7} async-f.js (async-f) 101 bytes <{1}> [rendered] + > ./f [0] ./index.js 6:0-47 + [6] ./f.js 34 bytes {7} [built] + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built] +chunk {8} async-g.js (async-g) 101 bytes <{1}> [rendered] + > ./g [0] ./index.js 7:0-47 + [7] ./g.js 34 bytes {8} [built] + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-issue-6413 1`] = ` "Entrypoint main = main.js -chunk {0} vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{5}> ={1}= ={2}= ={3}= ={4}= [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) - > ./a [5] ./index.js 1:0-47 - > ./b [5] ./index.js 2:0-47 - > ./c [5] ./index.js 3:0-47 - [1] ./node_modules/x.js 20 bytes {0} [built] -chunk {1} async-a~async-b~async-c.js (async-a~async-b~async-c) 11 bytes <{5}> ={0}= ={2}= ={3}= ={4}= [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) - > ./a [5] ./index.js 1:0-47 - > ./b [5] ./index.js 2:0-47 - > ./c [5] ./index.js 3:0-47 - [0] ./common.js 11 bytes {1} [built] -chunk {2} async-a.js (async-a) 19 bytes <{5}> ={0}= ={1}= [rendered] - > ./a [5] ./index.js 1:0-47 - [2] ./a.js 19 bytes {2} [built] -chunk {3} async-b.js (async-b) 19 bytes <{5}> ={0}= ={1}= [rendered] - > ./b [5] ./index.js 2:0-47 - [3] ./b.js 19 bytes {3} [built] -chunk {4} async-c.js (async-c) 19 bytes <{5}> ={0}= ={1}= [rendered] - > ./c [5] ./index.js 3:0-47 - [4] ./c.js 19 bytes {4} [built] -chunk {5} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< [entry] [rendered] +chunk {0} vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{2}> ={1}= ={3}= ={4}= ={5}= [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + > ./c [0] ./index.js 3:0-47 + [5] ./node_modules/x.js 20 bytes {0} [built] +chunk {1} async-a~async-b~async-c.js (async-a~async-b~async-c) 11 bytes <{2}> ={0}= ={3}= ={4}= ={5}= [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + > ./c [0] ./index.js 3:0-47 + [4] ./common.js 11 bytes {1} [built] +chunk {2} main.js (main) 147 bytes >{0}< >{1}< >{3}< >{4}< >{5}< [entry] [rendered] > ./ main - [5] ./index.js 147 bytes {5} [built]" + [0] ./index.js 147 bytes {2} [built] +chunk {3} async-a.js (async-a) 19 bytes <{2}> ={0}= ={1}= [rendered] + > ./a [0] ./index.js 1:0-47 + [1] ./a.js 19 bytes {3} [built] +chunk {4} async-b.js (async-b) 19 bytes <{2}> ={0}= ={1}= [rendered] + > ./b [0] ./index.js 2:0-47 + [2] ./b.js 19 bytes {4} [built] +chunk {5} async-c.js (async-c) 19 bytes <{2}> ={0}= ={1}= [rendered] + > ./c [0] ./index.js 3:0-47 + [3] ./c.js 19 bytes {5} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-issue-6696 1`] = ` "Entrypoint main = vendors.js main.js -chunk {0} async-a.js (async-a) 32 bytes <{2}> <{3}> [rendered] - > ./a [3] ./index.js 2:0-47 - [0] ./node_modules/x.js 20 bytes {0} {1} [built] - [1] ./a.js 12 bytes {0} [built] -chunk {1} async-b.js (async-b) 32 bytes <{2}> <{3}> [rendered] - > ./b [3] ./index.js 3:0-47 - [0] ./node_modules/x.js 20 bytes {0} {1} [built] - [2] ./b.js 12 bytes {1} [built] -chunk {2} main.js (main) 110 bytes ={3}= >{0}< >{1}< [entry] [rendered] +chunk {0} main.js (main) 110 bytes ={3}= >{1}< >{2}< [entry] [rendered] > ./ main - [3] ./index.js 110 bytes {2} [built] -chunk {3} vendors.js (vendors) 20 bytes ={2}= >{0}< >{1}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + [0] ./index.js 110 bytes {0} [built] +chunk {1} async-a.js (async-a) 32 bytes <{0}> <{3}> [rendered] + > ./a [0] ./index.js 2:0-47 + [2] ./a.js 12 bytes {1} [built] + [4] ./node_modules/x.js 20 bytes {1} {2} [built] +chunk {2} async-b.js (async-b) 32 bytes <{0}> <{3}> [rendered] + > ./b [0] ./index.js 3:0-47 + [3] ./b.js 12 bytes {2} [built] + [4] ./node_modules/x.js 20 bytes {1} {2} [built] +chunk {3} vendors.js (vendors) 20 bytes ={0}= >{1}< >{2}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./ main - [4] ./node_modules/y.js 20 bytes {3} [built]" + [1] ./node_modules/y.js 20 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-issue-7401 1`] = ` "Entrypoint a = vendors~a~c.js a.js Entrypoint b = b.js Chunk Group c = vendors~a~c.js c.js -chunk {0} vendors~a~c.js (vendors~a~c) 20 bytes <{3}> ={1}= ={2}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~c) +chunk {0} vendors~a~c.js (vendors~a~c) 20 bytes <{2}> ={1}= ={3}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~c) > ./a a - > ./c [3] ./b.js 1:0-41 + > ./c [2] ./b.js 1:0-41 [0] ./node_modules/x.js 20 bytes {0} [built] -chunk {1} c.js (c) 12 bytes <{3}> ={0}= [rendered] - > ./c [3] ./b.js 1:0-41 - [1] ./c.js 12 bytes {1} [built] -chunk {2} a.js (a) 12 bytes ={0}= [entry] [rendered] +chunk {1} a.js (a) 12 bytes ={0}= [entry] [rendered] > ./a a - [2] ./a.js 12 bytes {2} [built] -chunk {3} b.js (b) 43 bytes >{0}< >{1}< [entry] [rendered] + [1] ./a.js 12 bytes {1} [built] +chunk {2} b.js (b) 43 bytes >{0}< >{3}< [entry] [rendered] > ./b b - [3] ./b.js 43 bytes {3} [built]" + [2] ./b.js 43 bytes {2} [built] +chunk {3} c.js (c) 12 bytes <{2}> ={0}= [rendered] + > ./c [2] ./b.js 1:0-41 + [3] ./c.js 12 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-max-size 1`] = ` @@ -2958,30 +2958,30 @@ Child development: exports[`StatsTestCases should print correct stats for split-chunks-prefer-bigger-splits 1`] = ` "Entrypoint main = default/main.js -chunk {0} default/async-b~async-c.js (async-b~async-c) 110 bytes <{4}> ={2}= ={3}= [rendered] split chunk (cache group: default) (name: async-b~async-c) - > ./b [6] ./index.js 2:0-47 - > ./c [6] ./index.js 3:0-47 - [0] ./d.js 43 bytes {0} {1} [built] - [2] ./f.js 67 bytes {0} [built] -chunk {1} default/async-a.js (async-a) 134 bytes <{4}> [rendered] - > ./a [6] ./index.js 1:0-47 - [0] ./d.js 43 bytes {0} {1} [built] - [1] ./e.js 43 bytes {1} {2} [built] - [3] ./a.js 48 bytes {1} [built] -chunk {2} default/async-b.js (async-b) 105 bytes <{4}> ={0}= [rendered] - > ./b [6] ./index.js 2:0-47 - [1] ./e.js 43 bytes {1} {2} [built] - [4] ./b.js 62 bytes {2} [built] -chunk {3} default/async-c.js (async-c) 48 bytes <{4}> ={0}= [rendered] - > ./c [6] ./index.js 3:0-47 - [5] ./c.js 48 bytes {3} [built] -chunk {4} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< [entry] [rendered] +chunk {0} default/async-b~async-c.js (async-b~async-c) 110 bytes <{1}> ={3}= ={4}= [rendered] split chunk (cache group: default) (name: async-b~async-c) + > ./b [0] ./index.js 2:0-47 + > ./c [0] ./index.js 3:0-47 + [4] ./d.js 43 bytes {0} {2} [built] + [6] ./f.js 67 bytes {0} [built] +chunk {1} default/main.js (main) 147 bytes >{0}< >{2}< >{3}< >{4}< [entry] [rendered] > ./ main - [6] ./index.js 147 bytes {4} [built]" + [0] ./index.js 147 bytes {1} [built] +chunk {2} default/async-a.js (async-a) 134 bytes <{1}> [rendered] + > ./a [0] ./index.js 1:0-47 + [1] ./a.js 48 bytes {2} [built] + [4] ./d.js 43 bytes {0} {2} [built] + [5] ./e.js 43 bytes {2} {3} [built] +chunk {3} default/async-b.js (async-b) 105 bytes <{1}> ={0}= [rendered] + > ./b [0] ./index.js 2:0-47 + [2] ./b.js 62 bytes {3} [built] + [5] ./e.js 43 bytes {2} {3} [built] +chunk {4} default/async-c.js (async-c) 48 bytes <{1}> ={0}= [rendered] + > ./c [0] ./index.js 3:0-47 + [3] ./c.js 48 bytes {4} [built]" `; exports[`StatsTestCases should print correct stats for tree-shaking 1`] = ` -"Hash: 7664ceef8f3f695c9688 +"Hash: 676a77cd1dc12f6d6cc8 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -2995,13 +2995,13 @@ Entrypoint main = bundle.js [no exports used] [2] ./unknown.js 0 bytes {0} [built] [only some exports used: c] - [3] ./unknown2.js 0 bytes {0} [built] + [3] ./reexport-unknown.js 83 bytes {0} [built] + [exports: a, b, c, d] + [only some exports used: a, c] + [4] ./reexport-star-unknown.js 68 bytes {0} [built] + [only some exports used: a, c] + [5] ./unknown2.js 0 bytes {0} [built] [only some exports used: y] - [4] ./index.js 315 bytes {0} [built] - [no exports] - [5] ./require.include.js 36 bytes {0} [built] - [exports: a, default] - [no exports used] [6] ./reexport-known.js 49 bytes {0} [built] [exports: a, b] [only some exports used: a] @@ -3010,11 +3010,11 @@ Entrypoint main = bundle.js [only some exports used: a] [8] ./edge.js 45 bytes {0} [built] [only some exports used: y] - [9] ./reexport-unknown.js 83 bytes {0} [built] - [exports: a, b, c, d] - [only some exports used: a, c] -[10] ./reexport-star-unknown.js 68 bytes {0} [built] - [only some exports used: a, c]" + [9] ./index.js 315 bytes {0} [built] + [no exports] +[10] ./require.include.js 36 bytes {0} [built] + [exports: a, default] + [no exports used]" `; exports[`StatsTestCases should print correct stats for warnings-uglifyjs 1`] = ` diff --git a/test/configCases/chunk-index/order-multiple-entries/webpack.config.js b/test/configCases/chunk-index/order-multiple-entries/webpack.config.js index 52dd6319209..29d22978153 100644 --- a/test/configCases/chunk-index/order-multiple-entries/webpack.config.js +++ b/test/configCases/chunk-index/order-multiple-entries/webpack.config.js @@ -66,6 +66,8 @@ module.exports = { asyncIndex2: "0: ./async.js" }); const indicies = compilation.modules + .slice() + .sort((a, b) => a.index - b.index) .map( m => `${m.index}: ${m.readableIdentifier( @@ -74,6 +76,8 @@ module.exports = { ) .join(", "); const indicies2 = compilation.modules + .slice() + .sort((a, b) => a.index2 - b.index2) .map( m => `${m.index2}: ${m.readableIdentifier( @@ -82,10 +86,10 @@ module.exports = { ) .join(", "); expect(indicies).toEqual( - "2: ./shared.js, 4: ./c.js, 3: ./b.js, 1: ./a.js, 6: ./async.js, 5: ./entry2.js, 0: ./entry1.js" + "0: ./entry1.js, 1: ./a.js, 2: ./shared.js, 3: ./b.js, 4: ./c.js, 5: ./entry2.js, 6: ./async.js" ); expect(indicies2).toEqual( - "0: ./shared.js, 3: ./c.js, 2: ./b.js, 1: ./a.js, 6: ./async.js, 5: ./entry2.js, 4: ./entry1.js" + "0: ./shared.js, 1: ./a.js, 2: ./b.js, 3: ./c.js, 4: ./entry1.js, 5: ./entry2.js, 6: ./async.js" ); }); }; diff --git a/test/configCases/code-generation/use-strict/index.js b/test/configCases/code-generation/use-strict/index.js index cf05674bee8..8f132820682 100644 --- a/test/configCases/code-generation/use-strict/index.js +++ b/test/configCases/code-generation/use-strict/index.js @@ -15,12 +15,14 @@ it("should include only one use strict per module", function() { match = regExp.exec(source); } + matches.sort(); + expect(matches).toEqual([ - "__webpack_require__.r(__webpack_exports__);", "/* unused harmony default export */ var _unused_webpack_default_export = (\"a\");", "__webpack_require__.r(__webpack_exports__);", "__webpack_require__.r(__webpack_exports__);", "__webpack_require__.r(__webpack_exports__);", + "__webpack_require__.r(__webpack_exports__);", "it(\"should include only one use strict per module\", function() {", ]); }); diff --git a/test/configCases/hash-length/output-filename/test.config.js b/test/configCases/hash-length/output-filename/test.config.js index c378cab5525..224a52035b7 100644 --- a/test/configCases/hash-length/output-filename/test.config.js +++ b/test/configCases/hash-length/output-filename/test.config.js @@ -18,7 +18,7 @@ module.exports = { var bundleDetects = [ options.amd.expectedChunkFilenameLength && { - regex: new RegExp("^0.bundle" + i, "i"), + regex: new RegExp("^\\d+.bundle" + i, "i"), expectedNameLength: options.amd.expectedChunkFilenameLength }, { diff --git a/test/configCases/plugins/banner-plugin/index.js b/test/configCases/plugins/banner-plugin/index.js index 105a1f91b12..02653b73aeb 100644 --- a/test/configCases/plugins/banner-plugin/index.js +++ b/test/configCases/plugins/banner-plugin/index.js @@ -6,7 +6,7 @@ it("should contain banner in bundle0 chunk", () => { expect(source).toMatch("A test value"); expect(source).toMatch("banner is a string"); expect(source).toMatch("banner is a function"); - expect(source).toMatch("/*!\n * multiline\n * banner\n * 1\n */"); + expect(source).toMatch("/*!\n * multiline\n * banner\n * bundle0\n */"); }); it("should not contain banner in vendors chunk", () => { diff --git a/test/configCases/plugins/banner-plugin/webpack.config.js b/test/configCases/plugins/banner-plugin/webpack.config.js index fcaaee27a46..ed4baebb4d1 100644 --- a/test/configCases/plugins/banner-plugin/webpack.config.js +++ b/test/configCases/plugins/banner-plugin/webpack.config.js @@ -19,7 +19,7 @@ module.exports = { exclude: ["vendors.js"] }), new webpack.BannerPlugin({ - banner: ({ chunk }) => `multiline\nbanner\n${chunk.id}` + banner: ({ chunk }) => `multiline\nbanner\n${chunk.name}` }) ] }; From b2b4be046ee82455f04f3e6afa6e67df0db684cc Mon Sep 17 00:00:00 2001 From: Josh Unger Date: Fri, 13 Jul 2018 08:17:04 -0600 Subject: [PATCH 40/41] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f8dabebe47d..5c009e538c7 100644 --- a/README.md +++ b/README.md @@ -96,9 +96,12 @@ within webpack itself use this plugin interface. This makes webpack very |[compression-webpack-plugin][compression]|![compression-npm]|![compression-size]|Prepares compressed versions of assets to serve them with Content-Encoding| |[i18n-webpack-plugin][i18n]|![i18n-npm]|![i18n-size]|Adds i18n support to your bundles| |[html-webpack-plugin][html-plugin]|![html-plugin-npm]|![html-plugin-size]| Simplifies creation of HTML files (`index.html`) to serve your bundles| - +|[extract-text-webpack-plugin][extract]|![extract-npm]|![extract-size]|Extract text from a bundle, or bundles, into a separate file| [common-npm]: https://img.shields.io/npm/v/webpack.svg +[extract]: https://github.com/webpack/extract-text-webpack-plugin +[extract-npm]: https://img.shields.io/npm/v/extract-text-webpack-plugin.svg +[extract-size]: https://packagephobia.now.sh/badge?p=extract-text-webpack-plugin [mini-css]: https://github.com/webpack-contrib/mini-css-extract-plugin [mini-css-npm]: https://img.shields.io/npm/v/mini-css-extract-plugin.svg [mini-css-size]: https://packagephobia.now.sh/badge?p=mini-css-extract-plugin From 4c19fe19ebcd6acfcbf8934104ac3d849d3b29f4 Mon Sep 17 00:00:00 2001 From: Florent Cailhol Date: Sat, 14 Jul 2018 22:57:48 +0200 Subject: [PATCH 41/41] Use v4 of eslint-scope --- package.json | 2 +- yarn.lock | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 2120e5e4ec4..580cb6711cd 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "ajv-keywords": "^3.1.0", "chrome-trace-event": "^1.0.0", "enhanced-resolve": "^4.1.0", - "eslint-scope": "^3.7.1", + "eslint-scope": "^4.0.0", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.3.0", "loader-utils": "^1.1.0", diff --git a/yarn.lock b/yarn.lock index 40ab5125d53..fe3b3b99172 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1871,6 +1871,13 @@ eslint-scope@^3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"