Skip to content

Commit 81c6041

Browse files
authored
Merge pull request webpack#7102 from alejandroMA/bugfix/runtime-chunk-integration
fix bug where sometimes the runtime would not be present on output
2 parents ec83e8e + 22b4446 commit 81c6041

File tree

9 files changed

+80
-0
lines changed

9 files changed

+80
-0
lines changed

lib/Chunk.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class Chunk {
5050
this.ids = null;
5151
this.debugId = debugId++;
5252
this.name = name;
53+
this.preventIntegration = false;
5354
this.entryModule = undefined;
5455
this._modules = new SortableSet(undefined, sortByIdentifier);
5556
this._groups = new SortableSet(undefined, sortById);
@@ -265,6 +266,9 @@ class Chunk {
265266
}
266267
return true;
267268
};
269+
270+
if (this.preventIntegration || otherChunk.preventIntegration) return false;
271+
268272
if (this.hasRuntime() !== otherChunk.hasRuntime()) {
269273
if (this.hasRuntime()) {
270274
return isAvailable(this, otherChunk);

lib/optimize/RuntimeChunkPlugin.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ module.exports = class RuntimeChunkPlugin {
2525
name = name(entrypoint);
2626
}
2727
const newChunk = compilation.addChunk(name);
28+
newChunk.preventIntegration = true;
2829
entrypoint.unshiftChunk(newChunk);
2930
newChunk.addGroup(entrypoint);
3031
entrypoint.setRuntimeChunk(newChunk);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default "b";
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default "c";
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default "d";
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
Child base:
2+
Asset Size Chunks Chunk Names
3+
0.js 719 bytes 0 [emitted]
4+
main1.js 542 bytes 1 [emitted] main1
5+
runtime.js 7.73 KiB 2 [emitted] runtime
6+
Entrypoint main1 = runtime.js main1.js
7+
[0] ./b.js 20 bytes {0} [built]
8+
[1] ./c.js 20 bytes {0} [built]
9+
[2] ./d.js 20 bytes {0} [built]
10+
[3] ./main1.js 66 bytes {1} [built]
11+
Child manifest is named entry:
12+
Asset Size Chunks Chunk Names
13+
0.js 719 bytes 0 [emitted]
14+
manifest.js 8.04 KiB 1 [emitted] manifest
15+
main1.js 542 bytes 2 [emitted] main1
16+
Entrypoint main1 = manifest.js main1.js
17+
Entrypoint manifest = manifest.js
18+
[0] ./b.js 20 bytes {0} [built]
19+
[1] ./c.js 20 bytes {0} [built]
20+
[2] ./d.js 20 bytes {0} [built]
21+
[3] ./main1.js 66 bytes {2} [built]
22+
[4] ./f.js 20 bytes {1} [built]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default "f";
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import("./b");
2+
import("./c");
3+
import("./d");
4+
5+
export default "a";
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
const MinChunkSizePlugin = require("../../../lib/optimize/MinChunkSizePlugin");
2+
3+
const baseConfig = {
4+
mode: "production",
5+
target: "web",
6+
output: {
7+
filename: "[name].js"
8+
},
9+
stats: {
10+
hash: false,
11+
timings: false,
12+
builtAt: false
13+
},
14+
plugins: [
15+
new MinChunkSizePlugin({
16+
minChunkSize: 1000
17+
})
18+
]
19+
};
20+
21+
const withoutNamedEntry = Object.assign({}, baseConfig, {
22+
name: "base",
23+
entry: {
24+
main1: "./main1"
25+
},
26+
optimization: {
27+
runtimeChunk: "single"
28+
}
29+
});
30+
31+
const withNamedEntry = Object.assign({}, baseConfig, {
32+
name: "manifest is named entry",
33+
entry: {
34+
main1: "./main1",
35+
manifest: "./f"
36+
},
37+
optimization: {
38+
runtimeChunk: {
39+
name: "manifest"
40+
}
41+
}
42+
});
43+
44+
module.exports = [withoutNamedEntry, withNamedEntry];

0 commit comments

Comments
 (0)