From 374376d6dc0f0ecb565aad4f154bb0cc1f427359 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 24 May 2018 15:37:52 +0200 Subject: [PATCH] fixes #7382 --- lib/optimize/RuntimeChunkPlugin.js | 14 ++++++--- .../__snapshots__/StatsTestCases.test.js.snap | 5 +++ .../statsCases/runtime-chunk-issue-7382/e1.js | 1 + .../statsCases/runtime-chunk-issue-7382/e2.js | 1 + .../webpack.config.js | 31 +++++++++++++++++++ 5 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 test/statsCases/runtime-chunk-issue-7382/e1.js create mode 100644 test/statsCases/runtime-chunk-issue-7382/e2.js create mode 100644 test/statsCases/runtime-chunk-issue-7382/webpack.config.js diff --git a/lib/optimize/RuntimeChunkPlugin.js b/lib/optimize/RuntimeChunkPlugin.js index 3c7d5b70fba..1325dfc7868 100644 --- a/lib/optimize/RuntimeChunkPlugin.js +++ b/lib/optimize/RuntimeChunkPlugin.js @@ -19,11 +19,15 @@ module.exports = class RuntimeChunkPlugin { compilation.hooks.optimizeChunksAdvanced.tap("RuntimeChunkPlugin", () => { for (const entrypoint of compilation.entrypoints.values()) { const chunk = entrypoint.getRuntimeChunk(); - if (chunk.getNumberOfModules() > 0) { - let name = this.options.name; - if (typeof name === "function") { - name = name(entrypoint); - } + let name = this.options.name; + if (typeof name === "function") { + name = name(entrypoint); + } + if ( + chunk.getNumberOfModules() > 0 || + !chunk.preventIntegration || + chunk.name !== name + ) { const newChunk = compilation.addChunk(name); newChunk.preventIntegration = true; entrypoint.unshiftChunk(newChunk); diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index b1226b7d44c..6d359b7f07c 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -1973,6 +1973,11 @@ Child manifest is named entry: [4] ./f.js 20 bytes {1} [built]" `; +exports[`StatsTestCases should print correct stats for runtime-chunk-issue-7382 1`] = ` +"Entrypoint e1 = runtime.js all.js e1.js +Entrypoint e2 = runtime.js all.js e2.js" +`; + exports[`StatsTestCases should print correct stats for runtime-chunk-single 1`] = ` "Entrypoint e1 = runtime.js e1.js Entrypoint e2 = runtime.js e2.js" diff --git a/test/statsCases/runtime-chunk-issue-7382/e1.js b/test/statsCases/runtime-chunk-issue-7382/e1.js new file mode 100644 index 00000000000..d8e371ad463 --- /dev/null +++ b/test/statsCases/runtime-chunk-issue-7382/e1.js @@ -0,0 +1 @@ +module.exports = "entry1"; diff --git a/test/statsCases/runtime-chunk-issue-7382/e2.js b/test/statsCases/runtime-chunk-issue-7382/e2.js new file mode 100644 index 00000000000..a5a3b0d8841 --- /dev/null +++ b/test/statsCases/runtime-chunk-issue-7382/e2.js @@ -0,0 +1 @@ +module.exports = "entry2"; diff --git a/test/statsCases/runtime-chunk-issue-7382/webpack.config.js b/test/statsCases/runtime-chunk-issue-7382/webpack.config.js new file mode 100644 index 00000000000..ba14189a142 --- /dev/null +++ b/test/statsCases/runtime-chunk-issue-7382/webpack.config.js @@ -0,0 +1,31 @@ +module.exports = { + mode: "development", + entry: { + e1: "./e1", + e2: "./e2" + }, + output: { + filename: "[name].js" + }, + stats: { + hash: false, + timings: false, + builtAt: false, + assets: false, + modules: false, + reasons: true + }, + optimization: { + runtimeChunk: "single", + splitChunks: { + cacheGroups: { + all: { + test: /./, + name: "all", + minSize: 0, + chunks: "initial" + } + } + } + } +};