Skip to content

Commit d14f62c

Browse files
committed
fix: avoid prefetch/preload of loaded CSS files
1 parent 978b5fa commit d14f62c

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

src/index.js

+28-1
Original file line numberDiff line numberDiff line change
@@ -845,9 +845,10 @@ class MiniCssExtractPlugin {
845845
const { chunkGraph, chunk, runtimeRequirements } = this;
846846
const {
847847
runtimeTemplate,
848-
outputOptions: { crossOriginLoading },
848+
outputOptions: { chunkLoadingGlobal, crossOriginLoading },
849849
} = this.compilation;
850850
const chunkMap = getCssChunkObject(chunk, this.compilation);
851+
const globalObject = runtimeTemplate.globalObject;
851852
const { linkPreload, linkPrefetch } =
852853
JsonpChunkLoadingRuntimeModule.getCompilationHooks(compilation);
853854
const conditionMap = chunkGraph.getChunkConditionMap(
@@ -868,6 +869,9 @@ class MiniCssExtractPlugin {
868869
const withPreload = runtimeRequirements.has(
869870
RuntimeGlobals.preloadChunkHandlers
870871
);
872+
const chunkLoadingGlobalExpr = `${globalObject}[${JSON.stringify(
873+
chunkLoadingGlobal
874+
)}]`;
871875

872876
if (!withLoading && !withHmr) {
873877
return "";
@@ -993,6 +997,23 @@ class MiniCssExtractPlugin {
993997
),
994998
"};",
995999
"",
1000+
`var webpackJsonpCallback = ${runtimeTemplate.basicFunction(
1001+
"parentChunkLoadingFunction, data",
1002+
[
1003+
runtimeTemplate.destructureArray(["chunkIds"], "data"),
1004+
"for(var i=0;i < chunkIds.length; i++) {",
1005+
Template.indent([
1006+
"var chunkId = chunkIds[i];",
1007+
"installedCssChunks[chunkId] = 0;",
1008+
]),
1009+
"}",
1010+
]
1011+
)}`,
1012+
"",
1013+
`var chunkLoadingGlobal = ${chunkLoadingGlobalExpr} = ${chunkLoadingGlobalExpr} || [];`,
1014+
"chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));",
1015+
"chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));",
1016+
"",
9961017
`${
9971018
RuntimeGlobals.ensureChunkHandlers
9981019
}.miniCss = ${runtimeTemplate.basicFunction(
@@ -1213,6 +1234,12 @@ class MiniCssExtractPlugin {
12131234
compilation.hooks.runtimeRequirementInTree
12141235
.for(RuntimeGlobals.hmrDownloadUpdateHandlers)
12151236
.tap(pluginName, handler);
1237+
compilation.hooks.runtimeRequirementInTree
1238+
.for(RuntimeGlobals.prefetchChunkHandlers)
1239+
.tap(pluginName, handler);
1240+
compilation.hooks.runtimeRequirementInTree
1241+
.for(RuntimeGlobals.preloadChunkHandlers)
1242+
.tap(pluginName, handler);
12161243
});
12171244
}
12181245

0 commit comments

Comments
 (0)