Skip to content

Commit

Permalink
fix: avoid prefetch/preload of loaded CSS files
Browse files Browse the repository at this point in the history
  • Loading branch information
FogelAI committed Jul 13, 2023
1 parent 978b5fa commit d14f62c
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -845,9 +845,10 @@ class MiniCssExtractPlugin {
const { chunkGraph, chunk, runtimeRequirements } = this;
const {
runtimeTemplate,
outputOptions: { crossOriginLoading },
outputOptions: { chunkLoadingGlobal, crossOriginLoading },
} = this.compilation;
const chunkMap = getCssChunkObject(chunk, this.compilation);
const globalObject = runtimeTemplate.globalObject;
const { linkPreload, linkPrefetch } =
JsonpChunkLoadingRuntimeModule.getCompilationHooks(compilation);
const conditionMap = chunkGraph.getChunkConditionMap(
Expand All @@ -868,6 +869,9 @@ class MiniCssExtractPlugin {
const withPreload = runtimeRequirements.has(
RuntimeGlobals.preloadChunkHandlers
);
const chunkLoadingGlobalExpr = `${globalObject}[${JSON.stringify(
chunkLoadingGlobal
)}]`;

if (!withLoading && !withHmr) {
return "";
Expand Down Expand Up @@ -993,6 +997,23 @@ class MiniCssExtractPlugin {
),
"};",
"",
`var webpackJsonpCallback = ${runtimeTemplate.basicFunction(
"parentChunkLoadingFunction, data",
[
runtimeTemplate.destructureArray(["chunkIds"], "data"),
"for(var i=0;i < chunkIds.length; i++) {",
Template.indent([
"var chunkId = chunkIds[i];",
"installedCssChunks[chunkId] = 0;",
]),
"}",
]
)}`,
"",
`var chunkLoadingGlobal = ${chunkLoadingGlobalExpr} = ${chunkLoadingGlobalExpr} || [];`,
"chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));",
"chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));",
"",
`${
RuntimeGlobals.ensureChunkHandlers
}.miniCss = ${runtimeTemplate.basicFunction(
Expand Down Expand Up @@ -1213,6 +1234,12 @@ class MiniCssExtractPlugin {
compilation.hooks.runtimeRequirementInTree
.for(RuntimeGlobals.hmrDownloadUpdateHandlers)
.tap(pluginName, handler);
compilation.hooks.runtimeRequirementInTree
.for(RuntimeGlobals.prefetchChunkHandlers)
.tap(pluginName, handler);
compilation.hooks.runtimeRequirementInTree
.for(RuntimeGlobals.preloadChunkHandlers)
.tap(pluginName, handler);
});
}

Expand Down

0 comments on commit d14f62c

Please sign in to comment.