From 0f587763e138017afb11592070c81fdab5ca047d Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 11 May 2018 18:12:30 +0200 Subject: [PATCH] add per chunk index and index2 refactor index generation --- lib/ChunkGroup.js | 44 ++ lib/Compilation.js | 257 ++++--- lib/util/Queue.js | 2 +- .../__snapshots__/StatsTestCases.test.js.snap | 700 +++++++++--------- .../chunk-index/order-multiple-entries/a.js | 1 + .../order-multiple-entries/async.js | 0 .../chunk-index/order-multiple-entries/b.js | 1 + .../chunk-index/order-multiple-entries/c.js | 0 .../order-multiple-entries/entry1.js | 6 + .../order-multiple-entries/entry2.js | 6 + .../order-multiple-entries/shared.js | 0 .../order-multiple-entries/test.config.js | 5 + .../order-multiple-entries/webpack.config.js | 95 +++ 13 files changed, 665 insertions(+), 452 deletions(-) create mode 100644 test/configCases/chunk-index/order-multiple-entries/a.js create mode 100644 test/configCases/chunk-index/order-multiple-entries/async.js create mode 100644 test/configCases/chunk-index/order-multiple-entries/b.js create mode 100644 test/configCases/chunk-index/order-multiple-entries/c.js create mode 100644 test/configCases/chunk-index/order-multiple-entries/entry1.js create mode 100644 test/configCases/chunk-index/order-multiple-entries/entry2.js create mode 100644 test/configCases/chunk-index/order-multiple-entries/shared.js create mode 100644 test/configCases/chunk-index/order-multiple-entries/test.config.js create mode 100644 test/configCases/chunk-index/order-multiple-entries/webpack.config.js diff --git a/lib/ChunkGroup.js b/lib/ChunkGroup.js index 482800b7ed4..764ca9b17b6 100644 --- a/lib/ChunkGroup.js +++ b/lib/ChunkGroup.js @@ -70,6 +70,12 @@ class ChunkGroup { this.chunks = []; /** @type {OriginRecord[]} */ this.origins = []; + /** Indicies in top-down order */ + /** @private @type {Map} */ + this._moduleIndicies = new Map(); + /** Indicies in bottom-up order */ + /** @private @type {Map} */ + this._moduleIndicies2 = new Map(); } /** @@ -447,6 +453,44 @@ class ChunkGroup { return result; } + /** + * Sets the top-down index of a module in this ChunkGroup + * @param {Module} module module for which the index should be set + * @param {number} index the index of the module + * @returns {void} + */ + setModuleIndex(module, index) { + this._moduleIndicies.set(module, index); + } + + /** + * Gets the top-down index of a module in this ChunkGroup + * @param {Module} module the module + * @returns {number} index + */ + getModuleIndex(module) { + return this._moduleIndicies.get(module); + } + + /** + * Sets the bottom-up index of a module in this ChunkGroup + * @param {Module} module module for which the index should be set + * @param {number} index the index of the module + * @returns {void} + */ + setModuleIndex2(module, index) { + this._moduleIndicies2.set(module, index); + } + + /** + * Gets the bottom-up index of a module in this ChunkGroup + * @param {Module} module the module + * @returns {number} index + */ + getModuleIndex2(module) { + return this._moduleIndicies2.get(module); + } + checkConstraints() { const chunk = this; for (const child of chunk._children) { diff --git a/lib/Compilation.js b/lib/Compilation.js index 1fd02ed4f6f..ea2d08d2244 100644 --- a/lib/Compilation.js +++ b/lib/Compilation.js @@ -36,6 +36,10 @@ const Queue = require("./util/Queue"); const SortableSet = require("./util/SortableSet"); const GraphHelpers = require("./GraphHelpers"); +/** @typedef {import("./Module")} Module */ +/** @typedef {import("./DependenciesBlock")} DependenciesBlock */ +/** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */ + const byId = (a, b) => { if (a.id < b.id) return -1; if (a.id > b.id) return 1; @@ -247,8 +251,6 @@ class Compilation extends Tapable { this._modules = new Map(); this.cache = null; this.records = null; - this.nextFreeModuleIndex = undefined; - this.nextFreeModuleIndex2 = undefined; this.additionalChunkAssets = []; this.assets = {}; this.errors = []; @@ -858,8 +860,6 @@ class Compilation extends Tapable { } this.hooks.afterOptimizeDependencies.call(this.modules); - this.nextFreeModuleIndex = 0; - this.nextFreeModuleIndex2 = 0; for (const preparedEntrypoint of this._preparedEntrypoints) { const module = preparedEntrypoint.module; const name = preparedEntrypoint.name; @@ -877,7 +877,6 @@ class Compilation extends Tapable { chunk.entryModule = module; chunk.name = name; - this.assignIndex(module); this.assignDepth(module); } this.processDependenciesBlocksForChunkGroups(this.chunkGroups.slice()); @@ -1026,6 +1025,13 @@ class Compilation extends Tapable { } } + /** + * @param {TODO} groupOptions options for the chunk group + * @param {Module} module the module the references the chunk group + * @param {TODO} loc the location from with the chunk group is reference (inside of module) + * @param {string} request the request from which the the chunk group is referenced + * @returns {ChunkGroup} the new or existing chunk group + */ addChunkInGroup(groupOptions, module, loc, request) { if (typeof groupOptions === "string") { groupOptions = { name: groupOptions }; @@ -1069,70 +1075,6 @@ class Compilation extends Tapable { return chunk; } - assignIndex(module) { - const assignIndexToModule = module => { - // enter module - if (typeof module.index !== "number") { - module.index = this.nextFreeModuleIndex++; - - // leave module - queue.push(() => (module.index2 = this.nextFreeModuleIndex2++)); - - // enter it as block - assignIndexToDependencyBlock(module); - } - }; - - const assignIndexToDependency = dependency => { - if (dependency.module) { - queue.push(() => assignIndexToModule(dependency.module)); - } - }; - - const assignIndexToDependencyBlock = block => { - let allDependencies = []; - - const iteratorDependency = d => allDependencies.push(d); - - const iteratorBlock = b => - queue.push(() => assignIndexToDependencyBlock(b)); - - if (block.variables) { - iterationBlockVariable(block.variables, iteratorDependency); - } - - if (block.dependencies) { - iterationOfArrayCallback(block.dependencies, iteratorDependency); - } - if (block.blocks) { - const blocks = block.blocks; - let indexBlock = blocks.length; - while (indexBlock--) { - iteratorBlock(blocks[indexBlock]); - } - } - - let indexAll = allDependencies.length; - while (indexAll--) { - iteratorAllDependencies(allDependencies[indexAll]); - } - }; - - const queue = [ - () => { - assignIndexToModule(module); - } - ]; - - const iteratorAllDependencies = d => { - queue.push(() => assignIndexToDependency(d)); - }; - - while (queue.length) { - queue.pop()(); - } - } - assignDepth(module) { const queue = new Set([module]); let depth; @@ -1175,7 +1117,12 @@ class Compilation extends Tapable { } } - // This method creates the Chunk graph from the Module graph + /** + * This method creates the Chunk graph from the Module graph + * @private + * @param {TODO[]} inputChunkGroups chunk groups which are processed + * @returns {void} + */ processDependenciesBlocksForChunkGroups(inputChunkGroups) { // Process is splitting into two parts: // Part one traverse the module graph and builds a very basic chunks graph @@ -1185,10 +1132,12 @@ class Compilation extends Tapable { // eachother and Blocks with Chunks. It stops traversing when all modules // for a chunk are already available. So it doesn't connect unneeded chunks. - const chunkDependencies = new Map(); // Map> + /** @type {Map} */ + const chunkDependencies = new Map(); const allCreatedChunkGroups = new Set(); // PREPARE + /** @type {Map} */ const blockInfoMap = new Map(); const iteratorDependency = d => { @@ -1215,7 +1164,15 @@ class Compilation extends Tapable { blockQueue.push(b); }; - let block, blockQueue, blockInfoModules, blockInfoBlocks; + /** @type {DependenciesBlock} */ + let block; + /** @type {TODO} */ + let blockQueue; + /** @type {Set} */ + let blockInfoModules; + /** @type {TODO[]} */ + let blockInfoBlocks; + for (const module of this.modules) { blockQueue = [module]; while (blockQueue.length > 0) { @@ -1236,7 +1193,7 @@ class Compilation extends Tapable { } const blockInfo = { - modules: blockInfoModules, + modules: Array.from(blockInfoModules), blocks: blockInfoBlocks }; blockInfoMap.set(block, blockInfo); @@ -1245,15 +1202,49 @@ class Compilation extends Tapable { // PART ONE + /** @type {Map} */ + const chunkGroupCounters = new Map(); + for (const chunkGroup of inputChunkGroups) { + chunkGroupCounters.set(chunkGroup, { index: 0, index2: 0 }); + } + + let nextFreeModuleIndex = 0; + let nextFreeModuleIndex2 = 0; + + /** @type {Map} */ const blockChunkGroups = new Map(); - // Start with the provided modules/chunks - const queue = inputChunkGroups.map(chunkGroup => ({ + const ADD_AND_ENTER_MODULE = 0; + const ENTER_MODULE = 1; + const PROCESS_BLOCK = 2; + const LEAVE_MODULE = 3; + + /** + * @typedef {Object} QueueItem + * @property {number} action + * @property {DependenciesBlock} block + * @property {Module} module + * @property {Chunk} chunk + * @property {ChunkGroup} chunkGroup + */ + + /** + * @param {ChunkGroup} chunkGroup chunk group + * @returns {QueueItem} queue item + */ + const chunkGroupToQueueItem = chunkGroup => ({ + action: ENTER_MODULE, block: chunkGroup.chunks[0].entryModule, module: chunkGroup.chunks[0].entryModule, chunk: chunkGroup.chunks[0], chunkGroup - })); + }); + + // Start with the provided modules/chunks + /** @type {QueueItem[]} */ + let queue = inputChunkGroups.map(chunkGroupToQueueItem).reverse(); + /** @type {QueueItem[]} */ + let queueDelayed = []; let module, chunk, chunkGroup; @@ -1276,6 +1267,7 @@ class Compilation extends Tapable { b.loc, b.request ); + chunkGroupCounters.set(c, { index: 0, index2: 0 }); blockChunkGroups.set(b, c); allCreatedChunkGroups.add(c); } @@ -1294,7 +1286,8 @@ class Compilation extends Tapable { }); // 3. We enqueue the DependenciesBlock for traversal - queue.push({ + queueDelayed.push({ + action: PROCESS_BLOCK, block: b, module: module, chunk: c.chunks[0], @@ -1305,33 +1298,95 @@ class Compilation extends Tapable { // Iterative traversal of the Module graph // Recursive would be simpler to write but could result in Stack Overflows while (queue.length) { - const queueItem = queue.pop(); - module = queueItem.module; - block = queueItem.block; - chunk = queueItem.chunk; - chunkGroup = queueItem.chunkGroup; + while (queue.length) { + const queueItem = queue.pop(); + module = queueItem.module; + block = queueItem.block; + chunk = queueItem.chunk; + chunkGroup = queueItem.chunkGroup; + + switch (queueItem.action) { + case ADD_AND_ENTER_MODULE: { + // We connect Module and Chunk when not already done + if (chunk.addModule(module)) { + module.addChunk(chunk); + } else { + // already connected, skip it + break; + } + } + // fallthrough + case ENTER_MODULE: { + if (chunkGroup !== undefined) { + const index = chunkGroup.getModuleIndex(module); + if (index === undefined) { + chunkGroup.setModuleIndex( + module, + chunkGroupCounters.get(chunkGroup).index++ + ); + } + } - // get prepared block info - const blockInfo = blockInfoMap.get(block); - - // Traverse all referenced modules - for (const refModule of blockInfo.modules) { - // We connect Module and Chunk when not already done - if (chunk.addModule(refModule)) { - refModule.addChunk(chunk); - - // And enqueue the Module for traversal - queue.push({ - block: refModule, - module: refModule, - chunk, - chunkGroup - }); + if (module.index === null) { + module.index = nextFreeModuleIndex++; + } + + queue.push({ + action: LEAVE_MODULE, + block, + module, + chunk, + chunkGroup + }); + } + // fallthrough + case PROCESS_BLOCK: { + // get prepared block info + const blockInfo = blockInfoMap.get(block); + + // Traverse all referenced modules + for (let i = blockInfo.modules.length - 1; i >= 0; i--) { + const refModule = blockInfo.modules[i]; + if (chunk.containsModule(refModule)) { + // skip early if already connected + continue; + } + // enqueue the add and enter to enter in the correct order + // this is relevant with circular dependencies + queue.push({ + action: ADD_AND_ENTER_MODULE, + block: refModule, + module: refModule, + chunk, + chunkGroup + }); + } + + // Traverse all Blocks + iterationOfArrayCallback(blockInfo.blocks, iteratorBlock); + break; + } + case LEAVE_MODULE: { + if (chunkGroup !== undefined) { + const index = chunkGroup.getModuleIndex2(module); + if (index === undefined) { + chunkGroup.setModuleIndex2( + module, + chunkGroupCounters.get(chunkGroup).index2++ + ); + } + } + + if (module.index2 === null) { + module.index2 = nextFreeModuleIndex2++; + } + break; + } } } - - // Traverse all Blocks - iterationOfArrayCallback(blockInfo.blocks, iteratorBlock); + const tempQueue = queue; + queue = queueDelayed.reverse(); + queueDelayed = tempQueue; } // PART TWO diff --git a/lib/util/Queue.js b/lib/util/Queue.js index 385b3a9bf51..6615e9f7759 100644 --- a/lib/util/Queue.js +++ b/lib/util/Queue.js @@ -5,7 +5,7 @@ */ class Queue { /** - * @param {IterableIterator=} items The initial elements. + * @param {Iterable=} items The initial elements. */ constructor(items) { /** @private @type {Set} */ diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index 1fe3e735870..86ee71aa875 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -148,58 +148,58 @@ 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-g.js (async-g) 54 bytes <{1}> <{5}> [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [2] ./f.js 20 bytes {0} {2} {3} {6} {7} [built] - [8] ./g.js 34 bytes {0} [built] - chunk {1} disabled/async-a.js (async-a) 216 bytes <{4}> >{0}< [rendered] + chunk {0} disabled/async-a.js (async-a) 216 bytes <{4}> >{3}< [rendered] > ./a [7] ./index.js 1:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {1} {2} {3} {5} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {1} {2} {5} {6} [built] - [5] ./a.js + 1 modules 156 bytes {1} {5} [built] + [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 {2} disabled/async-b.js (async-b) 152 bytes <{4}> [rendered] + chunk {1} disabled/async-b.js (async-b) 152 bytes <{4}> [rendered] > ./b [7] ./index.js 2:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {1} {2} {3} {5} {6} {7} [built] - [2] ./f.js 20 bytes {0} {2} {3} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {1} {2} {5} {6} [built] - [4] ./b.js 72 bytes {2} {6} [built] - chunk {3} disabled/async-c.js (async-c) 167 bytes <{4}> [rendered] + [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] > ./c [7] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {1} {2} {3} {5} {6} {7} [built] - [2] ./f.js 20 bytes {0} {2} {3} {6} {7} [built] - [6] ./c.js + 1 modules 107 bytes {3} {7} [built] + [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] - chunk {4} disabled/main.js (main) 147 bytes >{1}< >{2}< >{3}< [entry] [rendered] + chunk {3} disabled/async-g.js (async-g) 54 bytes <{0}> <{5}> [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 >{0}< [entry] [rendered] + chunk {5} disabled/a.js (a) 216 bytes >{3}< [entry] [rendered] > ./a a - [0] ./d.js 20 bytes {1} {2} {3} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {1} {2} {3} {5} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {1} {2} {5} {6} [built] - [5] ./a.js + 1 modules 156 bytes {1} {5} [built] + [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 {1} {2} {3} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {1} {2} {3} {5} {6} {7} [built] - [2] ./f.js 20 bytes {0} {2} {3} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {1} {2} {5} {6} [built] - [4] ./b.js 72 bytes {2} {6} [built] + [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 {1} {2} {3} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {1} {2} {3} {5} {6} {7} [built] - [2] ./f.js 20 bytes {0} {2} {3} {6} {7} [built] - [6] ./c.js + 1 modules 107 bytes {3} {7} [built] + [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] Child default: @@ -207,53 +207,53 @@ Child default: 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}= ={5}= ={6}= ={7}= ={8}= >{2}< >{4}< [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 <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= >{2}< >{7}< [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}= ={5}= ={6}= ={7}= ={8}= >{2}< >{4}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + 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) > ./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}> <{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}> <{10}> <{3}> <{4}> <{9}> ={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 > ./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}= ={5}= ={6}= >{2}< >{4}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) + 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) > ./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-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{5}> ={2}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {4} [built] - chunk {5} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{4}< [rendered] + 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 {5} {10} [built] + [7] ./a.js + 1 modules 156 bytes {4} {10} [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 {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 {6} {11} [built] - chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={8}= [rendered] + [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 {7} {12} [built] - chunk {8} default/vendors~async-c.js (vendors~async-c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={7}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) + [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] + > ./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}< >{5}< >{6}< >{7}< >{8}< [entry] [rendered] + 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}< >{4}< [entry] [rendered] + 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 {5} {10} [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] @@ -262,78 +262,78 @@ Child default: [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 {6} {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 {7} {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-g.js (async-g) 54 bytes <{1}> <{4}> <{6}> [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [2] ./f.js 20 bytes {0} {2} {3} {7} {8} [built] - [9] ./g.js 34 bytes {0} [built] - chunk {1} vendors/async-a.js (async-a) 216 bytes <{5}> >{0}< [rendered] + chunk {0} vendors/async-a.js (async-a) 216 bytes <{5}> >{3}< [rendered] > ./a [8] ./index.js 1:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} [built] - [3] ./node_modules/y.js 20 bytes {1} {2} {4} [built] - [7] ./a.js + 1 modules 156 bytes {1} {6} [built] + [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] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {2} vendors/async-b.js (async-b) 152 bytes <{5}> [rendered] + chunk {1} vendors/async-b.js (async-b) 152 bytes <{5}> [rendered] > ./b [8] ./index.js 2:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} [built] - [2] ./f.js 20 bytes {0} {2} {3} {7} {8} [built] - [3] ./node_modules/y.js 20 bytes {1} {2} {4} [built] - [5] ./b.js 72 bytes {2} {7} [built] - chunk {3} vendors/async-c.js (async-c) 152 bytes <{5}> [rendered] + [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] > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} [built] - [2] ./f.js 20 bytes {0} {2} {3} {7} {8} [built] - [4] ./node_modules/z.js 20 bytes {3} {4} [built] - [6] ./c.js 72 bytes {3} {8} [built] - chunk {4} vendors/vendors.js (vendors) 60 bytes ={6}= ={7}= ={8}= >{0}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + [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] + > ./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) > ./a a > ./b b > ./c c - [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} [built] - [3] ./node_modules/y.js 20 bytes {1} {2} {4} [built] - [4] ./node_modules/z.js 20 bytes {3} {4} [built] - chunk {5} vendors/main.js (main) 147 bytes >{1}< >{2}< >{3}< [entry] [rendered] + [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] > ./ main [8] ./index.js 147 bytes {5} [built] - chunk {6} vendors/a.js (a) 176 bytes ={4}= >{0}< [entry] [rendered] + chunk {6} vendors/a.js (a) 176 bytes ={4}= >{3}< [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] + [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] + [7] ./a.js + 1 modules 156 bytes {0} {6} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] chunk {7} vendors/b.js (b) 112 bytes ={4}= [entry] [rendered] > ./b b - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [2] ./f.js 20 bytes {0} {2} {3} {7} {8} [built] - [5] ./b.js 72 bytes {2} {7} [built] + [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] > ./c c - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [2] ./f.js 20 bytes {0} {2} {3} {7} {8} [built] - [6] ./c.js 72 bytes {3} {8} [built] + [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] 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}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= >{2}< >{5}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x) + 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) > ./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}= ={6}= ={7}= ={8}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + 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) > ./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}> <{10}> <{3}> <{6}> <{9}> ={0}= ={1}= ={3}= ={4}= ={5}= ={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}> <{10}> <{3}> <{5}> <{9}> ={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}= ={6}= ={7}= >{2}< >{5}< [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}= ={10}= ={11}= ={2}= ={5}= ={6}= >{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}= ={8}= [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}= ={12}= ={2}= ={7}= [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-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{6}> ={2}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {5} [built] - chunk {6} multiple-vendors/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{5}< [rendered] + chunk {5} multiple-vendors/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {6} {10} [built] + [6] ./a.js + 1 modules 156 bytes {5} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {7} multiple-vendors/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {6} multiple-vendors/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {7} {11} [built] - chunk {8} multiple-vendors/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [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] > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {8} {12} [built] - chunk {9} multiple-vendors/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{6}< >{7}< >{8}< [entry] [rendered] + [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] + > ./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}< >{5}< [entry] [rendered] + 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 {6} {10} [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 {7} {11} [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 {8} {12} [built] + [5] ./c.js 72 bytes {7} {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}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= >{2}< >{5}< [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}= ={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) > ./a a > ./b b > ./c c @@ -409,61 +409,61 @@ 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}= ={6}= ={7}= ={8}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + 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) > ./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}> <{10}> <{3}> <{6}> <{9}> ={0}= ={1}= ={3}= ={4}= ={5}= ={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}> <{10}> <{3}> <{5}> <{9}> ={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}= ={6}= ={7}= >{2}< >{5}< [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}= ={10}= ={11}= ={2}= ={5}= ={6}= >{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}= ={8}= [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}= ={12}= ={2}= ={7}= [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-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{6}> ={2}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {5} [built] - chunk {6} all/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{5}< [rendered] + chunk {5} all/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {6} {10} [built] + [6] ./a.js + 1 modules 156 bytes {5} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {7} all/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {6} all/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {7} {11} [built] - chunk {8} all/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {6} {11} [built] + 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 {8} {12} [built] - chunk {9} all/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{6}< >{7}< >{8}< [entry] [rendered] + [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] + > ./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}< >{5}< [entry] [rendered] + 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 {6} {10} [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 {7} {11} [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 {8} {12} [built]" + [5] ./c.js 72 bytes {7} {12} [built]" `; exports[`StatsTestCases should print correct stats for chunk-module-id-range 1`] = ` @@ -925,21 +925,21 @@ Child exports[`StatsTestCases should print correct stats for graph-correctness-entries 1`] = ` "Entrypoint e1 = e1.js Entrypoint e2 = e2.js -chunk {0} c.js (c) 49 bytes <{3}> <{4}> >{1}< [rendered] - [1] ./module-c.js 49 bytes {0} [built] - import() ./module-c [2] ./module-b.js 1:0-47 - import() ./module-c [4] ./e2.js 1:0-47 -chunk {1} a.js (a) 49 bytes <{0}> <{2}> >{4}< [rendered] - [0] ./module-a.js 49 bytes {1} [built] +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 {2} e1.js (e1) 49 bytes >{1}< [entry] [rendered] +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] single entry ./e1 e1 -chunk {3} e2.js (e2) 49 bytes >{0}< [entry] [rendered] +chunk {3} e2.js (e2) 49 bytes >{1}< [entry] [rendered] [4] ./e2.js 49 bytes {3} [built] single entry ./e2 e2 -chunk {4} b.js (b) 49 bytes <{1}> >{0}< [rendered] +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" `; @@ -950,29 +950,29 @@ 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} c.js (c) 49 bytes <{4}> <{5}> >{2}< [rendered] - [2] ./module-c.js 49 bytes {1} [built] - import() ./module-c [4] ./module-b.js 1:0-47 - import() ./module-c [6] ./e2.js 2:0-47 -chunk {2} a.js (a) 49 bytes <{1}> <{3}> >{5}< [rendered] - [1] ./module-a.js 49 bytes {2} [built] +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 {3} e1.js (e1) 119 bytes >{0}< >{2}< [entry] [rendered] +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] single entry ./e1 e1 -chunk {4} e2.js (e2) 119 bytes >{0}< >{1}< [entry] [rendered] +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] single entry ./e2 e2 -chunk {5} b.js (b) 179 bytes <{2}> >{1}< [rendered] +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" `; @@ -1173,8 +1173,8 @@ chunk {1} main.js (main) 12 bytes >{0}< [entry] [rendered] exports[`StatsTestCases should print correct stats for module-deduplication 1`] = ` "Asset Size Chunks Chunk Names - 0.js 730 bytes 0, 5 [emitted] - 1.js 730 bytes 1, 4 [emitted] + 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] @@ -1185,77 +1185,77 @@ e3.js 9.46 KiB 8 [emitted] e3 Entrypoint e1 = e1.js Entrypoint e2 = e2.js Entrypoint e3 = e3.js -chunk {0} 0.js 37 bytes <{7}> <{8}> [rendered] - [2] ./d.js 9 bytes {0} {6} [built] - [5] ./async1.js 28 bytes {0} {5} [built] -chunk {1} 1.js 37 bytes <{6}> <{8}> [rendered] - [3] ./f.js 9 bytes {1} {7} [built] - [6] ./async2.js 28 bytes {1} {4} [built] -chunk {2} 2.js 37 bytes <{6}> <{7}> [rendered] - [4] ./h.js 9 bytes {2} {8} [built] - [7] ./async3.js 28 bytes {2} {3} [built] -chunk {3} 3.js 28 bytes <{8}> [rendered] - [7] ./async3.js 28 bytes {2} {3} [built] +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 {1} {4} [built] -chunk {5} 5.js 28 bytes <{6}> [rendered] - [5] ./async1.js 28 bytes {0} {5} [built] -chunk {6} e1.js (e1) 152 bytes >{1}< >{2}< >{5}< [entry] [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 {0} {6} [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 >{0}< >{2}< >{4}< [entry] [rendered] +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 {1} {7} [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}< >{1}< >{3}< [entry] [rendered] +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 {2} {8} [built] + [4] ./h.js 9 bytes {1} {8} [built] [12] ./e3.js 116 bytes {8} [built] [13] ./g.js 9 bytes {8} [built]" `; exports[`StatsTestCases should print correct stats for module-deduplication-named 1`] = ` " Asset Size Chunks Chunk Names -async3.js 818 bytes 0 [emitted] async3 -async1.js 818 bytes 1 [emitted] async1 -async2.js 818 bytes 2 [emitted] async2 +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 Entrypoint e1 = e1.js Entrypoint e2 = e2.js Entrypoint e3 = e3.js -chunk {0} async3.js (async3) 89 bytes <{2}> <{5}> >{1}< [rendered] - [4] ./h.js 9 bytes {0} {5} [built] - [7] ./async3.js 80 bytes {0} [built] -chunk {1} async1.js (async1) 89 bytes <{0}> <{3}> >{2}< [rendered] - [2] ./d.js 9 bytes {1} {3} [built] - [5] ./async1.js 80 bytes {1} [built] -chunk {2} async2.js (async2) 89 bytes <{1}> <{4}> >{0}< [rendered] - [3] ./f.js 9 bytes {2} {4} [built] - [6] ./async2.js 80 bytes {2} [built] -chunk {3} e1.js (e1) 144 bytes >{1}< [entry] [rendered] +chunk {0} async1.js (async1) 89 bytes <{2}> <{3}> >{1}< [rendered] + [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] + [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 {1} {3} [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 >{2}< [entry] [rendered] +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] - [3] ./f.js 9 bytes {2} {4} [built] + [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 >{0}< [entry] [rendered] +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] - [4] ./h.js 9 bytes {0} {5} [built] + [4] ./h.js 9 bytes {2} {5} [built] [12] ./e3.js 108 bytes {5} [built] [13] ./g.js 9 bytes {5} [built]" `; @@ -1389,25 +1389,25 @@ Child child: `; exports[`StatsTestCases should print correct stats for optimize-chunks 1`] = ` -"Hash: c52867ded6f77bcf50cc +"Hash: 1d0e2ce94b197ef0ad5d 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 277 bytes 2, 1 [emitted] abd + abd.js 268 bytes 2, 1 [emitted] abd cir2.js 299 bytes 3 [emitted] cir2 main.js 9.09 KiB 4 [emitted] main -cir2 from cir1.js 359 bytes 5, 3 [emitted] cir2 from cir1 - chunk.js 190 bytes 6, 7 [emitted] chunk - ac in ab.js 130 bytes 7 [emitted] ac in ab + 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 Entrypoint main = main.js -chunk {0} cir1.js (cir1) 81 bytes <{3}> <{4}> >{5}< [rendered] +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}> >{7}< [rendered] +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] @@ -1415,27 +1415,27 @@ 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] - [6] ./modules/d.js 0 bytes {2} {6} [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} {5} [built] + [3] ./circular2.js 81 bytes {3} {7} [built] chunk {4} main.js (main) 523 bytes >{0}< >{1}< >{2}< >{3}< [entry] [rendered] > ./index main [4] ./modules/f.js 0 bytes {4} [built] [8] ./index.js 523 bytes {4} [built] -chunk {5} 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} {5} [built] - [7] ./modules/e.js 0 bytes {5} [built] -chunk {6} chunk.js (chunk) 0 bytes <{2}> <{7}> [rendered] +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/c.js 0 bytes {6} {7} [built] - [6] ./modules/d.js 0 bytes {2} {6} [built] -chunk {7} ac in ab.js (ac in ab) 0 bytes <{1}> >{6}< [rendered] - > [8] ./index.js 2:1-5:15 - [5] ./modules/c.js 0 bytes {6} {7} [built]" + [5] ./modules/d.js 0 bytes {2} {6} [built] + [6] ./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]" `; exports[`StatsTestCases should print correct stats for parse-error 1`] = ` @@ -1708,17 +1708,17 @@ 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}> >{10}< >{9}< (prefetch: {9} {10}) [rendered] +"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}> >{4}< >{5}< (preload: {4} {5}) [rendered] +chunk {2} c.js (c) 134 bytes <{3}> >{10}< >{9}< (preload: {9} {10}) [rendered] chunk {3} main.js (main) 195 bytes >{0}< >{1}< >{2}< (prefetch: {0} {1} {2}) [entry] [rendered] -chunk {4} c1.js (c1) 0 bytes <{2}> [rendered] -chunk {5} c2.js (c2) 0 bytes <{2}> [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} a1.js (a1) 0 bytes <{0}> [rendered] -chunk {10} a2.js (a2) 0 bytes <{0}> [rendered]" +chunk {9} c1.js (c1) 0 bytes <{2}> [rendered] +chunk {10} c2.js (c2) 0 bytes <{2}> [rendered]" `; exports[`StatsTestCases should print correct stats for preload 1`] = ` @@ -2038,9 +2038,9 @@ Entrypoint entry = entry.js `; exports[`StatsTestCases should print correct stats for scope-hoisting-multi 1`] = ` -"Hash: f47bea8ea571296b32b82a4cd6b69820dd6e8c36 +"Hash: cc16a0dfba6b532cf00e1421f841e8a050c2d66b Child - Hash: f47bea8ea571296b32b8 + Hash: cc16a0dfba6b532cf00e Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint first = vendor.js first.js @@ -2051,13 +2051,13 @@ Child [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 {2} [built] - [7] ./lazy_second.js 55 bytes {1} [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] Child - Hash: 2a4cd6b69820dd6e8c36 + Hash: 1421f841e8a050c2d66b Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint first = vendor.js first.js @@ -2070,7 +2070,7 @@ Child [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 {1} [built] + [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] ModuleConcatenation bailout: Module is an entry point @@ -2080,7 +2080,7 @@ Child | ./first.js 207 bytes [built] | ModuleConcatenation bailout: Module is an entry point | ./module_first.js 31 bytes [built] - [8] ./lazy_first.js 55 bytes {2} [built] + [8] ./lazy_first.js 55 bytes {1} [built] ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./first.js (referenced with import())" `; @@ -2118,14 +2118,14 @@ Entrypoint main = main.js 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/CompC.js 33 bytes [built] - [no exports used] - harmony side effect evaluation ./CompC [6] ./components/src/CompC/index.js 1:0-34 - harmony export imported specifier ./CompC [6] ./components/src/CompC/index.js 1:0-34 -[6] ./components/src/CompC/index.js 34 bytes [built] +[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 @@ -2180,53 +2180,53 @@ 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}= ={5}= ={6}= ={7}= ={8}= >{2}< >{4}< [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 <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= >{2}< >{7}< [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}= ={5}= ={6}= ={7}= ={8}= >{2}< >{4}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + 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) > ./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}> <{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}> <{10}> <{3}> <{4}> <{9}> ={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 > ./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}= ={5}= ={6}= >{2}< >{4}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) + 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) > ./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-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{5}> ={2}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {4} [built] - chunk {5} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{4}< [rendered] + 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 {5} {10} [built] + [7] ./a.js + 1 modules 156 bytes {4} {10} [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 {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 {6} {11} [built] - chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={8}= [rendered] + [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 {7} {12} [built] - chunk {8} default/vendors~async-c.js (vendors~async-c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={7}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) + [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] + > ./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}< >{5}< >{6}< >{7}< >{8}< [entry] [rendered] + 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}< >{4}< [entry] [rendered] + 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 {5} {10} [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] @@ -2235,20 +2235,20 @@ exports[`StatsTestCases should print correct stats for split-chunks 1`] = ` [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 {6} {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 {7} {12} [built] + [6] ./c.js 72 bytes {6} {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}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= >{2}< >{5}< [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}= ={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) > ./a a > ./b b > ./c c @@ -2256,117 +2256,117 @@ 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}= ={6}= ={7}= ={8}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + 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) > ./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}> <{10}> <{3}> <{6}> <{9}> ={0}= ={1}= ={3}= ={4}= ={5}= ={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}> <{10}> <{3}> <{5}> <{9}> ={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}= ={6}= ={7}= >{2}< >{5}< [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}= ={10}= ={11}= ={2}= ={5}= ={6}= >{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}= ={8}= [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}= ={12}= ={2}= ={7}= [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-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{6}> ={2}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {5} [built] - chunk {6} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{5}< [rendered] + chunk {5} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {6} {10} [built] + [6] ./a.js + 1 modules 156 bytes {5} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {7} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {6} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {7} {11} [built] - chunk {8} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {6} {11} [built] + 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 {8} {12} [built] - chunk {9} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{6}< >{7}< >{8}< [entry] [rendered] + [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] + > ./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}< >{5}< [entry] [rendered] + 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 {6} {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 {7} {11} [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 {8} {12} [built] + [5] ./c.js 72 bytes {7} {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}> ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= >{1}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + 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) > ./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] - [3] ./node_modules/y.js 20 bytes {0} [built] - [6] ./node_modules/z.js 20 bytes {0} [built] - [10] multi x y z 52 bytes {0} [built] - chunk {1} default/async-g.js (async-g) 54 bytes <{0}> <{2}> <{6}> [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [1] ./f.js 20 bytes {1} {3} {4} {7} {8} [built] - [9] ./g.js 34 bytes {1} [built] - chunk {2} default/async-a.js (async-a) 176 bytes <{5}> ={0}= >{1}< [rendered] + [2] ./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] > ./a [8] ./index.js 1:0-47 - [0] ./d.js 20 bytes {2} {3} {4} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {2} {6} [built] + [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 {3} default/async-b.js (async-b) 112 bytes <{5}> ={0}= [rendered] + chunk {2} default/async-b.js (async-b) 112 bytes <{5}> ={0}= [rendered] > ./b [8] ./index.js 2:0-47 - [0] ./d.js 20 bytes {2} {3} {4} {6} {7} {8} [built] - [1] ./f.js 20 bytes {1} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {3} {7} [built] - chunk {4} default/async-c.js (async-c) 112 bytes <{5}> ={0}= [rendered] + [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] > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {2} {3} {4} {6} {7} {8} [built] - [1] ./f.js 20 bytes {1} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {4} {8} [built] - chunk {5} default/main.js (main) 147 bytes >{0}< >{2}< >{3}< >{4}< [entry] [rendered] + [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] + > ./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}= >{1}< [entry] [rendered] + chunk {6} default/a.js (a) 176 bytes ={0}= >{4}< [entry] [rendered] > ./a a - [0] ./d.js 20 bytes {2} {3} {4} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {2} {6} [built] + [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 {2} {3} {4} {6} {7} {8} [built] - [1] ./f.js 20 bytes {1} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {3} {7} [built] + [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 {2} {3} {4} {6} {7} {8} [built] - [1] ./f.js 20 bytes {1} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {4} {8} [built] + [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] 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 @@ -2438,126 +2438,126 @@ 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}= ={6}= ={7}= ={8}= >{2}< >{5}< [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}= ={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) > ./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}= ={6}= ={7}= ={8}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + 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) > ./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}> <{10}> <{3}> <{6}> <{9}> ={0}= ={1}= ={3}= ={4}= ={5}= ={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}> <{10}> <{3}> <{5}> <{9}> ={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}= ={6}= ={7}= >{2}< >{5}< [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}= ={11}= ={2}= ={5}= ={6}= >{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}= ={8}= [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}= ={12}= ={2}= ={7}= [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-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{6}> ={2}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {5} [built] - chunk {6} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{5}< [rendered] + chunk {5} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {6} {10} [built] + [6] ./a.js + 1 modules 156 bytes {5} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {7} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {6} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {7} {11} [built] - chunk {8} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {6} {11} [built] + 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 {8} {12} [built] - chunk {9} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{6}< >{7}< >{8}< [entry] [rendered] + [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] + > ./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}< >{5}< [entry] [rendered] + 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 {6} {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 {7} {11} [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 {8} {12} [built] + [5] ./c.js 72 bytes {7} {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}> ={2}= ={3}= ={4}= ={7}= ={8}= >{1}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + chunk {0} default/vendors.js (vendors) 112 bytes <{5}> ={1}= ={2}= ={3}= ={7}= ={8}= >{4}< [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] - [6] ./node_modules/z.js 20 bytes {0} [built] - [10] multi x y z 52 bytes {0} [built] - chunk {1} default/async-g.js (async-g) 54 bytes <{0}> <{2}> <{6}> [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [1] ./f.js 20 bytes {1} {3} {4} {7} {8} [built] - [9] ./g.js 34 bytes {1} [built] - chunk {2} default/async-a.js (async-a) 176 bytes <{5}> ={0}= >{1}< [rendered] + [2] ./node_modules/x.js 20 bytes {0} {6} [built] + [3] ./node_modules/y.js 20 bytes {0} {6} [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] > ./a [8] ./index.js 1:0-47 - [0] ./d.js 20 bytes {2} {3} {4} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {2} {6} [built] + [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 {3} default/async-b.js (async-b) 112 bytes <{5}> ={0}= [rendered] + chunk {2} default/async-b.js (async-b) 112 bytes <{5}> ={0}= [rendered] > ./b [8] ./index.js 2:0-47 - [0] ./d.js 20 bytes {2} {3} {4} {6} {7} {8} [built] - [1] ./f.js 20 bytes {1} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {3} {7} [built] - chunk {4} default/async-c.js (async-c) 112 bytes <{5}> ={0}= [rendered] + [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] > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {2} {3} {4} {6} {7} {8} [built] - [1] ./f.js 20 bytes {1} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {4} {8} [built] - chunk {5} default/main.js (main) 147 bytes >{0}< >{2}< >{3}< >{4}< [entry] [rendered] + [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] + > ./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 >{1}< [entry] [rendered] + chunk {6} default/a.js (a) 216 bytes >{4}< [entry] [rendered] > ./a a - [0] ./d.js 20 bytes {2} {3} {4} {6} {7} {8} [built] + [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 {2} {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 {2} {3} {4} {6} {7} {8} [built] - [1] ./f.js 20 bytes {1} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {3} {7} [built] + [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 {2} {3} {4} {6} {7} {8} [built] - [1] ./f.js 20 bytes {1} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {4} {8} [built]" + [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]" `; exports[`StatsTestCases should print correct stats for split-chunks-combinations 1`] = ` diff --git a/test/configCases/chunk-index/order-multiple-entries/a.js b/test/configCases/chunk-index/order-multiple-entries/a.js new file mode 100644 index 00000000000..7777e2e08e5 --- /dev/null +++ b/test/configCases/chunk-index/order-multiple-entries/a.js @@ -0,0 +1 @@ +import "./shared"; \ No newline at end of file diff --git a/test/configCases/chunk-index/order-multiple-entries/async.js b/test/configCases/chunk-index/order-multiple-entries/async.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/configCases/chunk-index/order-multiple-entries/b.js b/test/configCases/chunk-index/order-multiple-entries/b.js new file mode 100644 index 00000000000..7777e2e08e5 --- /dev/null +++ b/test/configCases/chunk-index/order-multiple-entries/b.js @@ -0,0 +1 @@ +import "./shared"; \ No newline at end of file diff --git a/test/configCases/chunk-index/order-multiple-entries/c.js b/test/configCases/chunk-index/order-multiple-entries/c.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/configCases/chunk-index/order-multiple-entries/entry1.js b/test/configCases/chunk-index/order-multiple-entries/entry1.js new file mode 100644 index 00000000000..32a5fa8c867 --- /dev/null +++ b/test/configCases/chunk-index/order-multiple-entries/entry1.js @@ -0,0 +1,6 @@ +import "./a"; +import(/* webpackChunkName: "async" */ "./async"); +import "./b"; +import "./c"; + +it("should compile", () => {}); diff --git a/test/configCases/chunk-index/order-multiple-entries/entry2.js b/test/configCases/chunk-index/order-multiple-entries/entry2.js new file mode 100644 index 00000000000..aa9ec2317ed --- /dev/null +++ b/test/configCases/chunk-index/order-multiple-entries/entry2.js @@ -0,0 +1,6 @@ +import "./c"; +import(/* webpackChunkName: "async" */ "./async"); +import "./b"; +import "./a"; + +it("should compile", () => {}); diff --git a/test/configCases/chunk-index/order-multiple-entries/shared.js b/test/configCases/chunk-index/order-multiple-entries/shared.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/configCases/chunk-index/order-multiple-entries/test.config.js b/test/configCases/chunk-index/order-multiple-entries/test.config.js new file mode 100644 index 00000000000..65c1791bce3 --- /dev/null +++ b/test/configCases/chunk-index/order-multiple-entries/test.config.js @@ -0,0 +1,5 @@ +module.exports = { + findBundle: function(i, options) { + return ["entry1.js", "entry2.js"]; + } +}; diff --git a/test/configCases/chunk-index/order-multiple-entries/webpack.config.js b/test/configCases/chunk-index/order-multiple-entries/webpack.config.js new file mode 100644 index 00000000000..52dd6319209 --- /dev/null +++ b/test/configCases/chunk-index/order-multiple-entries/webpack.config.js @@ -0,0 +1,95 @@ +/** @typedef {import("../../../../lib/Compilation")} Compilation */ +/** @typedef {import("../../../../lib/Module")} Module */ + +module.exports = { + entry: { + entry1: "./entry1", + entry2: "./entry2" + }, + output: { + filename: "[name].js" + }, + plugins: [ + function() { + /** + * @param {Compilation} compilation compilation + * @returns {void} + */ + const handler = compilation => { + compilation.hooks.afterSeal.tap("testcase", () => { + const data = {}; + for (const [name, group] of compilation.namedChunkGroups) { + /** @type {Map} */ + const modules = new Map(); + const modules2 = new Map(); + for (const chunk of group.chunks) { + for (const module of chunk.modulesIterable) { + modules.set(module, group.getModuleIndex(module)); + modules2.set(module, group.getModuleIndex2(module)); + } + } + const sortedModules = Array.from(modules).sort((a, b) => { + return a[1] - b[1]; + }); + const sortedModules2 = Array.from(modules2).sort((a, b) => { + return a[1] - b[1]; + }); + const text = sortedModules + .map( + ([m, index]) => + `${index}: ${m.readableIdentifier( + compilation.requestShortener + )}` + ) + .join(", "); + const text2 = sortedModules2 + .map( + ([m, index]) => + `${index}: ${m.readableIdentifier( + compilation.requestShortener + )}` + ) + .join(", "); + data[name + "Index"] = text; + data[name + "Index2"] = text2; + } + expect(data).toEqual({ + entry1Index: + "0: ./entry1.js, 1: ./a.js, 2: ./shared.js, 3: ./b.js, 4: ./c.js", + entry1Index2: + "0: ./shared.js, 1: ./a.js, 2: ./b.js, 3: ./c.js, 4: ./entry1.js", + entry2Index: + "0: ./entry2.js, 1: ./c.js, 2: ./b.js, 3: ./shared.js, 4: ./a.js", + entry2Index2: + "0: ./c.js, 1: ./shared.js, 2: ./b.js, 3: ./a.js, 4: ./entry2.js", + asyncIndex: "0: ./async.js", + asyncIndex2: "0: ./async.js" + }); + const indicies = compilation.modules + .map( + m => + `${m.index}: ${m.readableIdentifier( + compilation.requestShortener + )}` + ) + .join(", "); + const indicies2 = compilation.modules + .map( + m => + `${m.index2}: ${m.readableIdentifier( + compilation.requestShortener + )}` + ) + .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" + ); + expect(indicies2).toEqual( + "0: ./shared.js, 3: ./c.js, 2: ./b.js, 1: ./a.js, 6: ./async.js, 5: ./entry2.js, 4: ./entry1.js" + ); + }); + }; + this.hooks.compilation.tap("testcase", handler); + } + ] +};