Skip to content

Commit d90f692

Browse files
fix: merge duplicate chunks after split chunks
2 parents 90dec30 + 46e0b9c commit d90f692

File tree

14 files changed

+182
-7
lines changed

14 files changed

+182
-7
lines changed

lib/optimize/MergeDuplicateChunksPlugin.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
"use strict";
77

8-
const { STAGE_BASIC } = require("../OptimizationStages");
8+
const { STAGE_ADVANCED } = require("../OptimizationStages");
99
const { runtimeEqual } = require("../util/runtime");
1010

1111
/** @typedef {import("../Compiler")} Compiler */
@@ -22,7 +22,7 @@ class MergeDuplicateChunksPlugin {
2222
compilation.hooks.optimizeChunks.tap(
2323
{
2424
name: "MergeDuplicateChunksPlugin",
25-
stage: STAGE_BASIC
25+
stage: STAGE_ADVANCED
2626
},
2727
chunks => {
2828
const { chunkGraph, moduleGraph } = compilation;

test/__snapshots__/StatsTestCases.basictest.js.snap

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4097,6 +4097,29 @@ chunk (runtime: main) 914.js X bytes <{792}> ={60}= ={263}= [rendered] split chu
40974097
webpack x.x.x compiled successfully"
40984098
`;
40994099
4100+
exports[`StatsTestCases should print correct stats for split-chunks-dedup 1`] = `
4101+
"asset main.js X KiB [emitted] (name: main) (id hint: main)
4102+
asset table-643--shared.js X bytes [emitted]
4103+
asset row-359--shared.js X bytes [emitted]
4104+
asset cell--shared.js X bytes [emitted]
4105+
asset templater--shared.js X bytes [emitted]
4106+
runtime modules X KiB 11 modules
4107+
built modules X bytes (javascript) X bytes (share-init) X bytes (consume-shared) [built]
4108+
cacheable modules X bytes
4109+
modules by path ./node_modules/ X bytes 4 modules
4110+
modules by path ./*.js X bytes 2 modules
4111+
provide-module modules X bytes
4112+
provide shared module (default) cell@1.0.0 = ./node_modules/cell/index.js X bytes [built] [code generated]
4113+
provide shared module (default) row@1.0.0 = ./node_modules/row/index.js X bytes [built] [code generated]
4114+
+ 2 modules
4115+
consume-shared-module modules X bytes
4116+
consume shared module (default) table@=1.0.0 (strict) (fallback: ./node_modules/...(truncated) X bytes [built] [code generated]
4117+
consume shared module (default) row@=1.0.0 (strict) (fallback: ./node_modules...(truncated) X bytes [built] [code generated]
4118+
consume shared module (default) templater@=1.0.0 (strict) (fallback: ./node_modu...(truncated) X bytes [built] [code generated]
4119+
consume shared module (default) cell@=1.0.0 (strict) (fallback: ./node_modules/...(truncated) X bytes [built] [code generated]
4120+
webpack x.x.x compiled successfully in X ms"
4121+
`;
4122+
41004123
exports[`StatsTestCases should print correct stats for split-chunks-issue-6413 1`] = `
41014124
"Entrypoint main X KiB = main.js
41024125
chunk (runtime: main) async-b.js (async-b) X bytes <{792}> ={476}= ={628}= [rendered]
@@ -4790,22 +4813,22 @@ assets by path *.wasm X KiB
47904813
asset XXXXXXXXXXXXXXXXXXXX.module.wasm X bytes [emitted] [immutable]
47914814
asset XXXXXXXXXXXXXXXXXXXX.module.wasm X bytes [emitted] [immutable]
47924815
asset XXXXXXXXXXXXXXXXXXXX.module.wasm X bytes [emitted] [immutable]
4793-
chunk (runtime: main) 573.bundle.js X bytes (javascript) X bytes (webassembly) [rendered]
4816+
chunk (runtime: main) 573.bundle.js X bytes (javascript) X bytes (webassembly) [rendered] reused as split chunk (cache group: default)
47944817
./Q_rsqrt.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
4795-
chunk (runtime: main) 672.bundle.js X bytes (javascript) X bytes (webassembly) [rendered]
4818+
chunk (runtime: main) 672.bundle.js X bytes (javascript) X bytes (webassembly) [rendered] reused as split chunk (cache group: default)
47964819
./duff.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
47974820
chunk (runtime: main) 787.bundle.js (id hint: vendors) X bytes [rendered] split chunk (cache group: defaultVendors)
47984821
./node_modules/env.js X bytes [built] [code generated]
47994822
chunk (runtime: main) bundle.js (main) X bytes (javascript) X KiB (runtime) [entry] [rendered]
48004823
runtime modules X KiB 11 modules
48014824
./index.js X bytes [built] [code generated]
4802-
chunk (runtime: main) 836.bundle.js X KiB (javascript) X bytes (webassembly) [rendered]
4825+
chunk (runtime: main) 836.bundle.js X KiB (javascript) X bytes (webassembly) [rendered] reused as split chunk (cache group: default)
48034826
./testFunction.wasm X bytes (javascript) X bytes (webassembly) [dependent] [built] [code generated]
48044827
./tests.js X KiB [built] [code generated]
4805-
chunk (runtime: main) 946.bundle.js X bytes (javascript) X bytes (webassembly) [rendered]
4828+
chunk (runtime: main) 946.bundle.js X bytes (javascript) X bytes (webassembly) [rendered] reused as split chunk (cache group: default)
48064829
./fact.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
48074830
./fast-math.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
4808-
chunk (runtime: main) 989.bundle.js X bytes (javascript) X bytes (webassembly) [rendered]
4831+
chunk (runtime: main) 989.bundle.js X bytes (javascript) X bytes (webassembly) [rendered] reused as split chunk (cache group: default)
48094832
./popcnt.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
48104833
runtime modules X KiB 11 modules
48114834
cacheable modules X KiB (javascript) X KiB (webassembly)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default async () => {
2+
const { test } = await import(/* webpackMode: "eager" */'./module')
3+
4+
test()
5+
};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { table } from 'table'
2+
3+
export function test() {
4+
expect(table([['1']])).toBe('<table><tr><td>1</td></tr></table>')
5+
}

test/statsCases/split-chunks-dedup/node_modules/cell/index.js

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/statsCases/split-chunks-dedup/node_modules/cell/package.json

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/statsCases/split-chunks-dedup/node_modules/row/index.js

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/statsCases/split-chunks-dedup/node_modules/row/package.json

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/statsCases/split-chunks-dedup/node_modules/table/index.js

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/statsCases/split-chunks-dedup/node_modules/table/package.json

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy