diff --git a/lib/WebpackOptionsDefaulter.js b/lib/WebpackOptionsDefaulter.js index a3b5ee65a..487fe2f3c 100644 --- a/lib/WebpackOptionsDefaulter.js +++ b/lib/WebpackOptionsDefaulter.js @@ -168,6 +168,7 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { this.set("optimization.usedExports", "make", options => isProductionLikeMode(options)); this.set("optimization.concatenateModules", "make", options => isProductionLikeMode(options)); this.set("optimization.splitChunks", {}); + this.set("optimization.splitChunks.maxComplexity", "make", options => isProductionLikeMode(options) ? 3 : 1); this.set("optimization.splitChunks.chunks", "async"); this.set("optimization.splitChunks.minSize", 30000); this.set("optimization.splitChunks.minChunks", 1); diff --git a/lib/optimize/SplitChunksPlugin.js b/lib/optimize/SplitChunksPlugin.js index f3c3270d9..d5b59b842 100644 --- a/lib/optimize/SplitChunksPlugin.js +++ b/lib/optimize/SplitChunksPlugin.js @@ -40,18 +40,41 @@ const isOverlap = (a, b) => { return false; }; +const getCombinations = (array, maxDepth) => { + const results = []; + getCombinationsInteral(array, maxDepth, results); + return results; +}; + +const getCombinationsInteral = (array, maxDepth, results) => { + results.push(array); + if(maxDepth === 0 || array.length === 1) { + return; + } + for(let i = 0; i < array.length; i++) { + const newArray = array.slice(0, i).concat(array.slice(i + 1, array.length)); + getCombinationsInteral(newArray, maxDepth - 1, results); + } +}; + const compareEntries = (a, b) => { // 1. by priority const diffPriority = a.cacheGroup.priority - b.cacheGroup.priority; if(diffPriority) return diffPriority; - // 2. by total modules size - const diffSize = b.size - a.size; - if(diffSize) return diffSize; + // 2. by number of chunks + const diffCount = a.chunks.size - b.chunks.size; + if(diffCount) return diffCount; + // 3. by size reduction + const aSizeReduce = a.size * (a.chunks.size - 1); + const bSizeReduce = b.size * (b.chunks.size - 1); + const diffSizeReduce = aSizeReduce - bSizeReduce; + if(diffSizeReduce) return diffSizeReduce; + // 4. by number of modules (to be able to compare by identifier) const modulesA = a.modules; const modulesB = b.modules; - // 3. by module identifiers const diff = modulesA.size - modulesB.size; if(diff) return diff; + // 5. by module identifiers modulesA.sort(); modulesB.sort(); const aI = modulesA[Symbol.iterator](); @@ -74,6 +97,7 @@ module.exports = class SplitChunksPlugin { static normalizeOptions(options) { return { + maxComplexity: options.maxComplexity || 0, chunks: options.chunks || "all", minSize: options.minSize || 0, minChunks: options.minChunks || 1, @@ -226,47 +250,53 @@ module.exports = class SplitChunksPlugin { reuseExistingChunk: cacheGroupSource.reuseExistingChunk }; // Select chunks by configuration - const selectedChunks = cacheGroup.chunks === "initial" ? chunks.filter(chunk => chunk.canBeInitial()) : + const maxSelectedChunks = cacheGroup.chunks === "initial" ? chunks.filter(chunk => chunk.canBeInitial()) : cacheGroup.chunks === "async" ? chunks.filter(chunk => !chunk.canBeInitial()) : chunks; - // Get indices of chunks in which this module occurs - const chunkIndices = selectedChunks.map(chunk => indexMap.get(chunk)); - // Break if minimum number of chunks is not reached - if(chunkIndices.length < cacheGroup.minChunks) - continue; - // Determine name for split chunk - const name = cacheGroup.getName(module, selectedChunks, cacheGroup.key); - // Create key for maps - // When it has a name we use the name as key - // Elsewise we create the key from chunks and cache group key - // This automatically merges equal names - const chunksKey = chunkIndices.sort().join(); - const key = name && `name:${name}` || - `chunks:${chunksKey} key:${cacheGroup.key}`; - // Add module to maps - let info = chunksInfoMap.get(key); - if(info === undefined) { - chunksInfoMap.set(key, info = { - modules: new SortableSet(undefined, sortByIdentifier), - cacheGroup, - name, - chunks: new Map(), - reusedableChunks: new Set(), - chunksKeys: new Set() - }); - } - info.modules.add(module); - if(!info.chunksKeys.has(chunksKey)) { - info.chunksKeys.add(chunksKey); - for(const chunk of selectedChunks) { - info.chunks.set(chunk, chunk.getNumberOfModules()); + // For all (nearly all) combination of chunk selection + for(const selectedChunks of getCombinations(maxSelectedChunks, this.options.maxComplexity)) { + // Get indices of chunks in which this module occurs + const chunkIndices = selectedChunks.map(chunk => indexMap.get(chunk)); + // Break if minimum number of chunks is not reached + if(chunkIndices.length < cacheGroup.minChunks) + continue; + // Determine name for split chunk + const name = cacheGroup.getName(module, selectedChunks, cacheGroup.key); + // Create key for maps + // When it has a name we use the name as key + // Elsewise we create the key from chunks and cache group key + // This automatically merges equal names + const chunksKey = chunkIndices.sort().join(); + const key = name && `name:${name}` || + `chunks:${chunksKey} key:${cacheGroup.key}`; + // Add module to maps + let info = chunksInfoMap.get(key); + if(info === undefined) { + chunksInfoMap.set(key, info = { + modules: new SortableSet(undefined, sortByIdentifier), + cacheGroup, + name, + chunks: new Map(), + reusedableChunks: new Set(), + chunksKeys: new Set() + }); + } + info.modules.add(module); + if(!info.chunksKeys.has(chunksKey)) { + info.chunksKeys.add(chunksKey); + for(const chunk of selectedChunks) { + info.chunks.set(chunk, chunk.getNumberOfModules()); + } } } } } - for(const info of chunksInfoMap.values()) { + for(const [key, info] of chunksInfoMap) { // Get size of module lists info.size = getModulesSize(info.modules); + if(info.size < info.cacheGroup.minSize) { + chunksInfoMap.delete(key); + } } let changed = false; while(chunksInfoMap.size > 0) { @@ -286,10 +316,7 @@ module.exports = class SplitChunksPlugin { } const item = bestEntry; - if(item.size < item.cacheGroup.minSize) { - chunksInfoMap.delete(bestEntryKey); - continue; - } + chunksInfoMap.delete(bestEntryKey); let chunkName = item.name; // Variable for the new chunk (lazy created) @@ -357,21 +384,25 @@ module.exports = class SplitChunksPlugin { } } // remove all modules from other entries and update size - for(const info of chunksInfoMap.values()) { + for(const [key, info] of chunksInfoMap) { if(isOverlap(info.chunks, item.chunks)) { const oldSize = info.modules.size; for(const module of item.modules) { info.modules.delete(module); } + if(info.modules.size === 0) { + chunksInfoMap.delete(key); + continue; + } if(info.modules.size !== oldSize) { info.size = getModulesSize(info.modules); + if(info.size < info.cacheGroup.minSize) + chunksInfoMap.delete(key); } } } changed = true; } - - chunksInfoMap.delete(bestEntryKey); } if(changed) return true; }); diff --git a/schemas/WebpackOptions.json b/schemas/WebpackOptions.json index 93969552e..57383a94e 100644 --- a/schemas/WebpackOptions.json +++ b/schemas/WebpackOptions.json @@ -1335,6 +1335,11 @@ "type": "object", "additionalProperties": false, "properties": { + "maxComplexity": { + "description": "Limits the algorithmic complexity", + "type": "number", + "minimum": 0 + }, "chunks": { "description": "Select chunks for determining shared modules (defaults to \"async\", \"initial\" and \"all\" requires adding these chunks to the HTML)", "enum": [ diff --git a/test/statsCases/async-commons-chunk-auto/expected.txt b/test/statsCases/async-commons-chunk-auto/expected.txt index 68fd07201..058595e80 100644 --- a/test/statsCases/async-commons-chunk-auto/expected.txt +++ b/test/statsCases/async-commons-chunk-auto/expected.txt @@ -62,52 +62,52 @@ 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}> ={8}= ={1}= ={3}= ={7}= ={2}= ={6}= ={5}= >{3}< >{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}> ={8}= ={1}= ={2}= ={7}= ={3}= ={6}= ={5}= >{2}< >{4}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) > ./c [8] ./index.js 3:0-47 > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1: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}= ={8}= ={3}= ={7}= ={2}= ={6}= ={5}= >{3}< >{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}= ={8}= ={2}= ={7}= ={3}= ={6}= ={5}= >{2}< >{4}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./c [8] ./index.js 3:0-47 > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{9}> ={0}= ={1}= ={6}= ={5}= >{3}< >{4}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) - > ./b [8] ./index.js 2:0-47 - > ./a [8] ./index.js 1:0-47 - [3] ./node_modules/y.js 20 bytes {2} {10} {11} [built] - chunk {3} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{2}> <{1}> <{5}> <{10}> <{9}> ={4}= ={0}= ={8}= ={1}= ={7}= [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}> <{3}> <{1}> <{5}> <{10}> <{9}> ={4}= ={0}= ={8}= ={1}= ={7}= ={3}= ={6}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./f.js 20 bytes {3} {6} {11} {12} [built] - chunk {4} default/async-g.js (async-g) 34 bytes <{0}> <{2}> <{1}> <{5}> <{10}> ={3}= [rendered] + > ./b [8] ./index.js 2: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}= ={6}= ={5}= >{2}< >{4}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) + > ./b [8] ./index.js 2:0-47 + > ./a [8] ./index.js 1:0-47 + [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] + chunk {4} default/async-g.js (async-g) 34 bytes <{0}> <{3}> <{1}> <{5}> <{10}> ={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}= ={2}= ={1}= >{3}< >{4}< [rendered] + chunk {5} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={3}= ={1}= >{2}< >{4}< [rendered] > ./a [8] ./index.js 1:0-47 [7] ./a.js + 1 modules 156 bytes {5} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {6} default/async-b.js (async-b) 92 bytes <{9}> ={0}= ={2}= ={1}= [rendered] + chunk {6} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={3}= ={1}= ={2}= [rendered] > ./b [8] ./index.js 2:0-47 - [2] ./f.js 20 bytes {3} {6} {11} {12} [built] [5] ./b.js 72 bytes {6} {11} [built] - chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={8}= ={1}= ={3}= [rendered] + chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={8}= ={1}= ={2}= [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}= ={3}= ={7}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) + 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) > ./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}< >{2}< >{1}< >{5}< >{6}< >{8}< >{3}< >{7}< [entry] [rendered] + chunk {9} default/main.js (main) 147 bytes >{0}< >{3}< >{1}< >{2}< >{6}< >{5}< >{8}< >{7}< [entry] [rendered] > ./ main [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 216 bytes >{3}< >{4}< [entry] [rendered] + chunk {10} default/a.js (a) 216 bytes >{2}< >{4}< [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 {2} {10} {11} [built] + [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] [7] ./a.js + 1 modules 156 bytes {5} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] @@ -115,14 +115,14 @@ Child default: > ./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 {3} {6} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {2} {10} {11} [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] 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 {3} {6} {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] Child vendors: @@ -185,10 +185,10 @@ Child vendors: [6] ./c.js 72 bytes {3} {8} [built] Child multiple-vendors: Entrypoint main = multiple-vendors/main.js - Entrypoint a = multiple-vendors/libs-x.js multiple-vendors/a.js - Entrypoint b = multiple-vendors/libs-x.js multiple-vendors/b.js - Entrypoint c = multiple-vendors/libs-x.js multiple-vendors/c.js - chunk {0} multiple-vendors/libs-x.js (libs-x) 20 bytes <{9}> ={12}= ={11}= ={10}= ={7}= ={1}= ={6}= ={2}= ={5}= ={4}= >{8}< >{3}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x) + 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}> ={4}= ={12}= ={3}= ={11}= ={10}= ={1}= ={2}= ={7}= ={6}= ={8}= >{2}< >{5}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x) > ./c c > ./b b > ./a a @@ -196,126 +196,126 @@ Child multiple-vendors: > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1:0-47 [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} multiple-vendors/a~async-a~async-b~async-c~b~c.js (a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={0}= ={7}= ={6}= ={2}= ={5}= ={4}= >{8}< >{3}< [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c) - > ./c [8] ./index.js 3:0-47 - > ./b [8] ./index.js 2:0-47 - > ./a [8] ./index.js 1:0-47 - [1] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} multiple-vendors/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={5}= ={4}= >{8}< >{3}< [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) - > ./b [8] ./index.js 2:0-47 - > ./a [8] ./index.js 1:0-47 - [3] ./node_modules/y.js 20 bytes {2} {10} {11} [built] - chunk {3} multiple-vendors/async-g.js (async-g) 34 bytes <{0}> <{10}> <{2}> <{1}> <{4}> ={8}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {3} [built] - chunk {4} multiple-vendors/async-a.js (async-a) 156 bytes <{9}> ={0}= ={2}= ={1}= >{8}< >{3}< [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} multiple-vendors/async-b.js (async-b) 92 bytes <{9}> ={0}= ={2}= ={1}= [rendered] - > ./b [8] ./index.js 2:0-47 - [0] ./f.js 20 bytes {5} {6} {8} {11} {12} [built] - [5] ./b.js 72 bytes {5} {11} [built] - chunk {6} multiple-vendors/async-c.js (async-c) 92 bytes <{9}> ={0}= ={7}= ={1}= [rendered] - > ./c [8] ./index.js 3:0-47 - [0] ./f.js 20 bytes {5} {6} {8} {11} {12} [built] - [6] ./c.js 72 bytes {6} {12} [built] - chunk {7} multiple-vendors/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={6}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) - > ./c [8] ./index.js 3:0-47 - [4] ./node_modules/z.js 20 bytes {7} {12} [built] - chunk {8} multiple-vendors/async-b~async-c~async-g~b~c.js (async-b~async-c~async-g~b~c) 20 bytes <{0}> <{10}> <{2}> <{1}> <{4}> ={3}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~b~c) - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [0] ./f.js 20 bytes {5} {6} {8} {11} {12} [built] - chunk {9} multiple-vendors/main.js (main) 147 bytes >{0}< >{2}< >{1}< >{4}< >{5}< >{7}< >{6}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} multiple-vendors/a.js (a) 196 bytes ={0}= >{8}< >{3}< [entry] [rendered] - > ./a a - [1] ./d.js 20 bytes {1} {10} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {2} {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} multiple-vendors/b.js (b) 132 bytes ={0}= [entry] [rendered] - > ./b b - [0] ./f.js 20 bytes {5} {6} {8} {11} {12} [built] - [1] ./d.js 20 bytes {1} {10} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {2} {10} {11} [built] - [5] ./b.js 72 bytes {5} {11} [built] - chunk {12} multiple-vendors/c.js (c) 132 bytes ={0}= [entry] [rendered] - > ./c c - [0] ./f.js 20 bytes {5} {6} {8} {11} {12} [built] - [1] ./d.js 20 bytes {1} {10} {11} {12} [built] - [4] ./node_modules/z.js 20 bytes {7} {12} [built] - [6] ./c.js 72 bytes {6} {12} [built] -Child all: - Entrypoint main = all/main.js - Entrypoint a = all/vendors~a~async-a~async-b~async-c~b~c.js all/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/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}> ={4}= ={12}= ={3}= ={11}= ={10}= ={1}= ={2}= ={8}= ={7}= ={6}= >{2}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) - > ./c c - > ./b b - > ./a a - > ./c [8] ./index.js 3:0-47 - > ./b [8] ./index.js 2:0-47 - > ./a [8] ./index.js 1:0-47 - [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} all/a~async-a~async-b~async-c~b~c.js (a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={0}= ={4}= ={2}= ={8}= ={3}= ={7}= ={6}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c) + chunk {1} multiple-vendors/a~async-a~async-b~async-c~b~c.js (a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={0}= ={4}= ={2}= ={7}= ={3}= ={6}= ={8}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c) > ./c [8] ./index.js 3:0-47 > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} all/async-b~async-c~async-g~b~c.js (async-b~async-c~async-g~b~c) 20 bytes <{0}> <{3}> <{1}> <{6}> <{10}> <{9}> ={5}= ={0}= ={4}= ={1}= ={8}= ={3}= ={7}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~b~c) + chunk {2} multiple-vendors/async-b~async-c~async-g~b~c.js (async-b~async-c~async-g~b~c) 20 bytes <{0}> <{3}> <{1}> <{8}> <{10}> <{9}> ={5}= ={0}= ={4}= ={1}= ={7}= ={3}= ={6}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~b~c) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./c [8] ./index.js 3:0-47 > ./b [8] ./index.js 2:0-47 [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} all/a~async-a~async-b~b.js (a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={11}= ={10}= ={1}= ={2}= ={7}= ={6}= >{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}= ={11}= ={10}= ={1}= ={2}= ={6}= ={8}= >{2}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) > ./b b > ./a a > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1: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}= ={12}= ={1}= ={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}= ={12}= ={1}= ={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}> <{3}> <{1}> <{6}> <{10}> ={2}= [rendered] + chunk {5} multiple-vendors/async-g.js (async-g) 34 bytes <{0}> <{3}> <{1}> <{8}> <{10}> ={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}= ={3}= ={1}= >{2}< >{5}< [rendered] + chunk {6} multiple-vendors/async-b.js (async-b) 72 bytes <{9}> ={0}= ={3}= ={1}= ={2}= [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}= ={4}= ={1}= ={2}= [rendered] + > ./c [8] ./index.js 3:0-47 + [5] ./c.js 72 bytes {7} {12} [built] + chunk {8} multiple-vendors/a~async-a.js (a~async-a) 156 bytes <{9}> ={0}= ={3}= ={1}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: a~async-a) > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {6} {10} [built] + [6] ./a.js + 1 modules 156 bytes {8} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {7} all/async-b.js (async-b) 72 bytes <{9}> ={0}= ={3}= ={1}= ={2}= [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}= ={4}= ={1}= ={2}= [rendered] + chunk {9} multiple-vendors/main.js (main) 147 bytes >{0}< >{3}< >{1}< >{2}< >{6}< >{8}< >{4}< >{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] + > ./a a + [0] ./d.js 20 bytes {1} {10} {11} {12} [built] + [6] ./a.js + 1 modules 156 bytes {8} {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] +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}> ={4}= ={12}= ={3}= ={11}= ={10}= ={1}= ={2}= ={7}= ={6}= ={8}= >{2}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) + > ./c c + > ./b b + > ./a a > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {8} {12} [built] - chunk {9} all/main.js (main) 147 bytes >{0}< >{3}< >{1}< >{2}< >{7}< >{6}< >{4}< >{8}< [entry] [rendered] + > ./b [8] ./index.js 2:0-47 + > ./a [8] ./index.js 1:0-47 + [2] ./node_modules/x.js 20 bytes {0} [built] + chunk {1} all/a~async-a~async-b~async-c~b~c.js (a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={0}= ={4}= ={2}= ={7}= ={3}= ={6}= ={8}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c) + > ./c [8] ./index.js 3:0-47 + > ./b [8] ./index.js 2:0-47 + > ./a [8] ./index.js 1:0-47 + [0] ./d.js 20 bytes {1} {10} {11} {12} [built] + chunk {2} all/async-b~async-c~async-g~b~c.js (async-b~async-c~async-g~b~c) 20 bytes <{0}> <{3}> <{1}> <{8}> <{10}> <{9}> ={5}= ={0}= ={4}= ={1}= ={7}= ={3}= ={6}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~b~c) + > ./g [] 6:0-47 + > ./g [] 6:0-47 + > ./c [8] ./index.js 3:0-47 + > ./b [8] ./index.js 2: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}= ={11}= ={10}= ={1}= ={2}= ={6}= ={8}= >{2}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + > ./b b + > ./a a + > ./b [8] ./index.js 2:0-47 + > ./a [8] ./index.js 1: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}= ={12}= ={1}= ={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}> <{3}> <{1}> <{8}> <{10}> ={2}= [rendered] + > ./g [] 6:0-47 + > ./g [] 6:0-47 + [9] ./g.js 34 bytes {5} [built] + chunk {6} all/async-b.js (async-b) 72 bytes <{9}> ={0}= ={3}= ={1}= ={2}= [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}= ={4}= ={1}= ={2}= [rendered] + > ./c [8] ./index.js 3:0-47 + [5] ./c.js 72 bytes {7} {12} [built] + chunk {8} all/a~async-a.js (a~async-a) 156 bytes <{9}> ={0}= ={3}= ={1}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: a~async-a) + > ./a [8] ./index.js 1:0-47 + [6] ./a.js + 1 modules 156 bytes {8} {10} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {9} all/main.js (main) 147 bytes >{0}< >{3}< >{1}< >{2}< >{6}< >{8}< >{4}< >{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] > ./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 {8} {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] \ No newline at end of file + [5] ./c.js 72 bytes {7} {12} [built] \ No newline at end of file diff --git a/test/statsCases/split-chunks-combinations/a.js b/test/statsCases/split-chunks-combinations/a.js new file mode 100644 index 000000000..1ffdae326 --- /dev/null +++ b/test/statsCases/split-chunks-combinations/a.js @@ -0,0 +1,3 @@ +import "./d"; +import "./e"; +export default "a"; diff --git a/test/statsCases/split-chunks-combinations/b.js b/test/statsCases/split-chunks-combinations/b.js new file mode 100644 index 000000000..aa63bb2f0 --- /dev/null +++ b/test/statsCases/split-chunks-combinations/b.js @@ -0,0 +1,3 @@ +import "./d"; +import "./e"; +export default "b"; diff --git a/test/statsCases/split-chunks-combinations/c.js b/test/statsCases/split-chunks-combinations/c.js new file mode 100644 index 000000000..a88137b62 --- /dev/null +++ b/test/statsCases/split-chunks-combinations/c.js @@ -0,0 +1,2 @@ +import "./d"; +export default "a"; diff --git a/test/statsCases/split-chunks-combinations/d.js b/test/statsCases/split-chunks-combinations/d.js new file mode 100644 index 000000000..1f44b439e --- /dev/null +++ b/test/statsCases/split-chunks-combinations/d.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-combinations/e.js b/test/statsCases/split-chunks-combinations/e.js new file mode 100644 index 000000000..1f44b439e --- /dev/null +++ b/test/statsCases/split-chunks-combinations/e.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-combinations/expected.txt b/test/statsCases/split-chunks-combinations/expected.txt new file mode 100644 index 000000000..74806a51b --- /dev/null +++ b/test/statsCases/split-chunks-combinations/expected.txt @@ -0,0 +1,19 @@ +Entrypoint main = main.js +chunk {0} async-a~async-b.js (async-a~async-b) 134 bytes <{4}> ={2}= ={1}= [rendered] split chunk (cache group: default) (name: async-a~async-b) + > ./b [5] ./index.js 2:0-47 + > ./a [5] ./index.js 1:0-47 + [0] ./d.js 67 bytes {0} {3} [built] + [1] ./e.js 67 bytes {0} [built] +chunk {1} async-a.js (async-a) 48 bytes <{4}> ={0}= [rendered] + > ./a [5] ./index.js 1:0-47 + [2] ./a.js 48 bytes {1} [built] +chunk {2} async-b.js (async-b) 48 bytes <{4}> ={0}= [rendered] + > ./b [5] ./index.js 2:0-47 + [3] ./b.js 48 bytes {2} [built] +chunk {3} async-c.js (async-c) 101 bytes <{4}> [rendered] + > ./c [5] ./index.js 3:0-47 + [0] ./d.js 67 bytes {0} {3} [built] + [4] ./c.js 34 bytes {3} [built] +chunk {4} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< [entry] [rendered] + > ./ main + [5] ./index.js 147 bytes {4} [built] \ No newline at end of file diff --git a/test/statsCases/split-chunks-combinations/f.js b/test/statsCases/split-chunks-combinations/f.js new file mode 100644 index 000000000..531ff10e5 --- /dev/null +++ b/test/statsCases/split-chunks-combinations/f.js @@ -0,0 +1 @@ +// content content content content content diff --git a/test/statsCases/split-chunks-combinations/index.js b/test/statsCases/split-chunks-combinations/index.js new file mode 100644 index 000000000..5dfec91bc --- /dev/null +++ b/test/statsCases/split-chunks-combinations/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-combinations/webpack.config.js b/test/statsCases/split-chunks-combinations/webpack.config.js new file mode 100644 index 000000000..536c5f125 --- /dev/null +++ b/test/statsCases/split-chunks-combinations/webpack.config.js @@ -0,0 +1,25 @@ +const stats = { + hash: false, + timings: false, + builtAt: false, + assets: false, + chunks: true, + chunkOrigins: true, + entrypoints: true, + modules: false +}; +module.exports = { + mode: "production", + entry: { + main: "./" + }, + output: { + filename: "[name].js" + }, + optimization: { + splitChunks: { + minSize: 100 + } + }, + stats +}; diff --git a/test/statsCases/split-chunks-prefer-bigger-splits/a.js b/test/statsCases/split-chunks-prefer-bigger-splits/a.js new file mode 100644 index 000000000..1ffdae326 --- /dev/null +++ b/test/statsCases/split-chunks-prefer-bigger-splits/a.js @@ -0,0 +1,3 @@ +import "./d"; +import "./e"; +export default "a"; diff --git a/test/statsCases/split-chunks-prefer-bigger-splits/b.js b/test/statsCases/split-chunks-prefer-bigger-splits/b.js new file mode 100644 index 000000000..516c72ceb --- /dev/null +++ b/test/statsCases/split-chunks-prefer-bigger-splits/b.js @@ -0,0 +1,4 @@ +import "./d"; +import "./e"; +import "./f"; +export default "b"; diff --git a/test/statsCases/split-chunks-prefer-bigger-splits/c.js b/test/statsCases/split-chunks-prefer-bigger-splits/c.js new file mode 100644 index 000000000..82d094916 --- /dev/null +++ b/test/statsCases/split-chunks-prefer-bigger-splits/c.js @@ -0,0 +1,3 @@ +import "./d"; +import "./f"; +export default "a"; diff --git a/test/statsCases/split-chunks-prefer-bigger-splits/d.js b/test/statsCases/split-chunks-prefer-bigger-splits/d.js new file mode 100644 index 000000000..531ff10e5 --- /dev/null +++ b/test/statsCases/split-chunks-prefer-bigger-splits/d.js @@ -0,0 +1 @@ +// content content content content content diff --git a/test/statsCases/split-chunks-prefer-bigger-splits/e.js b/test/statsCases/split-chunks-prefer-bigger-splits/e.js new file mode 100644 index 000000000..531ff10e5 --- /dev/null +++ b/test/statsCases/split-chunks-prefer-bigger-splits/e.js @@ -0,0 +1 @@ +// content content content content content diff --git a/test/statsCases/split-chunks-prefer-bigger-splits/expected.txt b/test/statsCases/split-chunks-prefer-bigger-splits/expected.txt new file mode 100644 index 000000000..e2fc34cbf --- /dev/null +++ b/test/statsCases/split-chunks-prefer-bigger-splits/expected.txt @@ -0,0 +1,21 @@ +Entrypoint main = default/main.js +chunk {0} default/async-b~async-c.js (async-b~async-c) 110 bytes <{4}> ={3}= ={2}= [rendered] split chunk (cache group: default) (name: async-b~async-c) + > ./c [6] ./index.js 3:0-47 + > ./b [6] ./index.js 2: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}< >{2}< >{3}< >{1}< [entry] [rendered] + > ./ main + [6] ./index.js 147 bytes {4} [built] \ No newline at end of file diff --git a/test/statsCases/split-chunks-prefer-bigger-splits/f.js b/test/statsCases/split-chunks-prefer-bigger-splits/f.js new file mode 100644 index 000000000..1f44b439e --- /dev/null +++ b/test/statsCases/split-chunks-prefer-bigger-splits/f.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-prefer-bigger-splits/index.js b/test/statsCases/split-chunks-prefer-bigger-splits/index.js new file mode 100644 index 000000000..5dfec91bc --- /dev/null +++ b/test/statsCases/split-chunks-prefer-bigger-splits/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-prefer-bigger-splits/webpack.config.js b/test/statsCases/split-chunks-prefer-bigger-splits/webpack.config.js new file mode 100644 index 000000000..bbf3daaf4 --- /dev/null +++ b/test/statsCases/split-chunks-prefer-bigger-splits/webpack.config.js @@ -0,0 +1,25 @@ +const stats = { + hash: false, + timings: false, + builtAt: false, + assets: false, + chunks: true, + chunkOrigins: true, + entrypoints: true, + modules: false +}; +module.exports = { + mode: "production", + entry: { + main: "./", + }, + output: { + filename: "default/[name].js" + }, + optimization: { + splitChunks: { + minSize: 80 + } + }, + stats +}; diff --git a/test/statsCases/split-chunks/expected.txt b/test/statsCases/split-chunks/expected.txt index 80b01318d..440b1ac7b 100644 --- a/test/statsCases/split-chunks/expected.txt +++ b/test/statsCases/split-chunks/expected.txt @@ -3,52 +3,52 @@ 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}> ={8}= ={1}= ={3}= ={7}= ={2}= ={6}= ={5}= >{3}< >{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}> ={8}= ={1}= ={2}= ={7}= ={3}= ={6}= ={5}= >{2}< >{4}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) > ./c [8] ./index.js 3:0-47 > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1: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}= ={8}= ={3}= ={7}= ={2}= ={6}= ={5}= >{3}< >{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}= ={8}= ={2}= ={7}= ={3}= ={6}= ={5}= >{2}< >{4}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./c [8] ./index.js 3:0-47 > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{9}> ={0}= ={1}= ={6}= ={5}= >{3}< >{4}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) - > ./b [8] ./index.js 2:0-47 - > ./a [8] ./index.js 1:0-47 - [3] ./node_modules/y.js 20 bytes {2} {10} {11} [built] - chunk {3} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{2}> <{1}> <{5}> <{10}> <{9}> ={4}= ={0}= ={8}= ={1}= ={7}= [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}> <{3}> <{1}> <{5}> <{10}> <{9}> ={4}= ={0}= ={8}= ={1}= ={7}= ={3}= ={6}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./f.js 20 bytes {3} {6} {11} {12} [built] - chunk {4} default/async-g.js (async-g) 34 bytes <{0}> <{2}> <{1}> <{5}> <{10}> ={3}= [rendered] + > ./b [8] ./index.js 2: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}= ={6}= ={5}= >{2}< >{4}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) + > ./b [8] ./index.js 2:0-47 + > ./a [8] ./index.js 1:0-47 + [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] + chunk {4} default/async-g.js (async-g) 34 bytes <{0}> <{3}> <{1}> <{5}> <{10}> ={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}= ={2}= ={1}= >{3}< >{4}< [rendered] + chunk {5} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={3}= ={1}= >{2}< >{4}< [rendered] > ./a [8] ./index.js 1:0-47 [7] ./a.js + 1 modules 156 bytes {5} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {6} default/async-b.js (async-b) 92 bytes <{9}> ={0}= ={2}= ={1}= [rendered] + chunk {6} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={3}= ={1}= ={2}= [rendered] > ./b [8] ./index.js 2:0-47 - [2] ./f.js 20 bytes {3} {6} {11} {12} [built] [5] ./b.js 72 bytes {6} {11} [built] - chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={8}= ={1}= ={3}= [rendered] + chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={8}= ={1}= ={2}= [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}= ={3}= ={7}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) + 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) > ./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}< >{2}< >{1}< >{5}< >{6}< >{8}< >{3}< >{7}< [entry] [rendered] + chunk {9} default/main.js (main) 147 bytes >{0}< >{3}< >{1}< >{2}< >{6}< >{5}< >{8}< >{7}< [entry] [rendered] > ./ main [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 216 bytes >{3}< >{4}< [entry] [rendered] + chunk {10} default/a.js (a) 216 bytes >{2}< >{4}< [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 {2} {10} {11} [built] + [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] [7] ./a.js + 1 modules 156 bytes {5} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] @@ -56,14 +56,14 @@ Child default: > ./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 {3} {6} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {2} {10} {11} [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] 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 {3} {6} {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] Child all-chunks: @@ -71,7 +71,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}> ={4}= ={12}= ={2}= ={11}= ={10}= ={1}= ={3}= ={8}= ={7}= ={6}= >{3}< >{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}> ={4}= ={12}= ={3}= ={11}= ={10}= ={1}= ={2}= ={7}= ={6}= ={8}= >{2}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) > ./c c > ./b b > ./a a @@ -79,61 +79,61 @@ Child all-chunks: > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1:0-47 [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} default/a~async-a~async-b~async-c~b~c.js (a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={0}= ={4}= ={3}= ={8}= ={2}= ={7}= ={6}= >{3}< >{5}< [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c) + chunk {1} default/a~async-a~async-b~async-c~b~c.js (a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={0}= ={4}= ={2}= ={7}= ={3}= ={6}= ={8}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c) > ./c [8] ./index.js 3:0-47 > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={11}= ={10}= ={1}= ={7}= ={6}= >{3}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + chunk {2} default/async-b~async-c~async-g~b~c.js (async-b~async-c~async-g~b~c) 20 bytes <{0}> <{3}> <{1}> <{8}> <{10}> <{9}> ={5}= ={0}= ={4}= ={1}= ={7}= ={3}= ={6}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~b~c) + > ./g [] 6:0-47 + > ./g [] 6:0-47 + > ./c [8] ./index.js 3:0-47 + > ./b [8] ./index.js 2: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}= ={11}= ={10}= ={1}= ={2}= ={6}= ={8}= >{2}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) > ./b b > ./a a > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1:0-47 - [3] ./node_modules/y.js 20 bytes {2} [built] - chunk {3} default/async-b~async-c~async-g~b~c.js (async-b~async-c~async-g~b~c) 20 bytes <{0}> <{2}> <{1}> <{6}> <{10}> <{9}> ={5}= ={0}= ={4}= ={1}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~b~c) - > ./g [] 6:0-47 - > ./g [] 6:0-47 - > ./c [8] ./index.js 3:0-47 - [1] ./f.js 20 bytes {3} {7} {11} {12} [built] - chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={12}= ={1}= ={3}= ={8}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + [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}= ={12}= ={1}= ={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}> <{2}> <{1}> <{6}> <{10}> ={3}= [rendered] + chunk {5} default/async-g.js (async-g) 34 bytes <{0}> <{3}> <{1}> <{8}> <{10}> ={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}= ={2}= ={1}= >{3}< >{5}< [rendered] + chunk {6} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={3}= ={1}= ={2}= [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}= ={4}= ={1}= ={2}= [rendered] + > ./c [8] ./index.js 3:0-47 + [5] ./c.js 72 bytes {7} {12} [built] + chunk {8} default/a~async-a.js (a~async-a) 156 bytes <{9}> ={0}= ={3}= ={1}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: a~async-a) > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {6} {10} [built] + [6] ./a.js + 1 modules 156 bytes {8} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {7} default/async-b.js (async-b) 92 bytes <{9}> ={0}= ={2}= ={1}= [rendered] - > ./b [8] ./index.js 2:0-47 - [1] ./f.js 20 bytes {3} {7} {11} {12} [built] - [4] ./b.js 72 bytes {7} {11} [built] - chunk {8} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={4}= ={1}= ={3}= [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}< >{2}< >{1}< >{6}< >{7}< >{4}< >{3}< >{8}< [entry] [rendered] + chunk {9} default/main.js (main) 147 bytes >{0}< >{3}< >{1}< >{2}< >{6}< >{8}< >{4}< >{7}< [entry] [rendered] > ./ main [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 176 bytes ={0}= ={2}= >{3}< >{5}< [entry] [rendered] + chunk {10} default/a.js (a) 176 bytes ={0}= ={3}= >{2}< >{5}< [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 {8} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {11} default/b.js (b) 112 bytes ={0}= ={2}= [entry] [rendered] + 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 {3} {7} {11} {12} [built] - [4] ./b.js 72 bytes {7} {11} [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 {3} {7} {11} {12} [built] - [5] ./c.js 72 bytes {8} {12} [built] + [1] ./f.js 20 bytes {2} {11} {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 @@ -195,7 +195,7 @@ Child name-too-long: Entrypoint aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~716093be.js vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js Entrypoint bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~716093be.js vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js Entrypoint cccccccccccccccccccccccccccccc = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~716093be.js vendors~async-c~cccccccccccccccccccccccccccccc.js cccccccccccccccccccccccccccccc.js - chunk {0} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~716093be.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~716093be) 20 bytes <{9}> ={4}= ={12}= ={2}= ={11}= ={10}= ={1}= ={3}= ={8}= ={7}= ={6}= >{3}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~716093be) + chunk {0} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~716093be.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~716093be) 20 bytes <{9}> ={4}= ={12}= ={3}= ={11}= ={10}= ={1}= ={2}= ={7}= ={6}= ={8}= >{2}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~716093be) > ./c cccccccccccccccccccccccccccccc > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -203,58 +203,58 @@ Child name-too-long: > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1:0-47 [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~e7d53185.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~e7d53185) 20 bytes <{9}> ={0}= ={4}= ={3}= ={8}= ={2}= ={7}= ={6}= >{3}< >{5}< [rendered] split chunk (cache group: default) (name: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~e7d53185) + chunk {1} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~e7d53185.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~e7d53185) 20 bytes <{9}> ={0}= ={4}= ={2}= ={7}= ={3}= ={6}= ={8}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~e7d53185) > ./c [8] ./index.js 3:0-47 > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1:0-47 [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 20 bytes <{9}> ={0}= ={11}= ={10}= ={1}= ={7}= ={6}= >{3}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + chunk {2} async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js (async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) 20 bytes <{0}> <{3}> <{1}> <{8}> <{10}> <{9}> ={5}= ={0}= ={4}= ={1}= ={7}= ={3}= ={6}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) + > ./g [] 6:0-47 + > ./g [] 6:0-47 + > ./c [8] ./index.js 3:0-47 + > ./b [8] ./index.js 2:0-47 + [1] ./f.js 20 bytes {2} {11} {12} [built] + chunk {3} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 20 bytes <{9}> ={0}= ={11}= ={10}= ={1}= ={2}= ={6}= ={8}= >{2}< >{5}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./b [8] ./index.js 2:0-47 > ./a [8] ./index.js 1:0-47 - [3] ./node_modules/y.js 20 bytes {2} [built] - chunk {3} async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js (async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) 20 bytes <{0}> <{2}> <{1}> <{6}> <{10}> <{9}> ={5}= ={0}= ={4}= ={1}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) - > ./g [] 6:0-47 - > ./g [] 6:0-47 - > ./c [8] ./index.js 3:0-47 - [1] ./f.js 20 bytes {3} {7} {11} {12} [built] - chunk {4} vendors~async-c~cccccccccccccccccccccccccccccc.js (vendors~async-c~cccccccccccccccccccccccccccccc) 20 bytes <{9}> ={0}= ={12}= ={1}= ={3}= ={8}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~cccccccccccccccccccccccccccccc) + [3] ./node_modules/y.js 20 bytes {3} [built] + chunk {4} vendors~async-c~cccccccccccccccccccccccccccccc.js (vendors~async-c~cccccccccccccccccccccccccccccc) 20 bytes <{9}> ={0}= ={12}= ={1}= ={2}= ={7}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~cccccccccccccccccccccccccccccc) > ./c cccccccccccccccccccccccccccccc > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] - chunk {5} async-g.js (async-g) 34 bytes <{0}> <{2}> <{1}> <{6}> <{10}> ={3}= [rendered] + chunk {5} async-g.js (async-g) 34 bytes <{0}> <{3}> <{1}> <{8}> <{10}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 [9] ./g.js 34 bytes {5} [built] - chunk {6} async-a.js (async-a) 156 bytes <{9}> ={0}= ={2}= ={1}= >{3}< >{5}< [rendered] + chunk {6} async-b.js (async-b) 72 bytes <{9}> ={0}= ={3}= ={1}= ={2}= [rendered] + > ./b [8] ./index.js 2:0-47 + [4] ./b.js 72 bytes {6} {11} [built] + chunk {7} async-c.js (async-c) 72 bytes <{9}> ={0}= ={4}= ={1}= ={2}= [rendered] + > ./c [8] ./index.js 3:0-47 + [5] ./c.js 72 bytes {7} {12} [built] + chunk {8} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a) 156 bytes <{9}> ={0}= ={3}= ={1}= >{2}< >{5}< [rendered] split chunk (cache group: default) (name: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a) > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {6} {10} [built] + [6] ./a.js + 1 modules 156 bytes {8} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {7} async-b.js (async-b) 92 bytes <{9}> ={0}= ={2}= ={1}= [rendered] - > ./b [8] ./index.js 2:0-47 - [1] ./f.js 20 bytes {3} {7} {11} {12} [built] - [4] ./b.js 72 bytes {7} {11} [built] - chunk {8} async-c.js (async-c) 72 bytes <{9}> ={0}= ={4}= ={1}= ={3}= [rendered] - > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {8} {12} [built] - chunk {9} main.js (main) 147 bytes >{0}< >{2}< >{1}< >{6}< >{7}< >{4}< >{3}< >{8}< [entry] [rendered] + chunk {9} main.js (main) 147 bytes >{0}< >{3}< >{1}< >{2}< >{6}< >{8}< >{4}< >{7}< [entry] [rendered] > ./ main [8] ./index.js 147 bytes {9} [built] - chunk {10} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) 176 bytes ={0}= ={2}= >{3}< >{5}< [entry] [rendered] + chunk {10} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) 176 bytes ={0}= ={3}= >{2}< >{5}< [entry] [rendered] > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [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 {8} {10} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {11} bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 112 bytes ={0}= ={2}= [entry] [rendered] + chunk {11} bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 112 bytes ={0}= ={3}= [entry] [rendered] > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {3} {7} {11} {12} [built] - [4] ./b.js 72 bytes {7} {11} [built] + [1] ./f.js 20 bytes {2} {11} {12} [built] + [4] ./b.js 72 bytes {6} {11} [built] chunk {12} cccccccccccccccccccccccccccccc.js (cccccccccccccccccccccccccccccc) 112 bytes ={0}= ={4}= [entry] [rendered] > ./c cccccccccccccccccccccccccccccc [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {3} {7} {11} {12} [built] - [5] ./c.js 72 bytes {8} {12} [built] \ No newline at end of file + [1] ./f.js 20 bytes {2} {11} {12} [built] + [5] ./c.js 72 bytes {7} {12} [built] \ No newline at end of file