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) [email protected] = ./node_modules/cell/index.js X bytes [built] [code generated]
4113+
provide shared module (default) [email protected] = ./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)