From 5b8ab7ed744be8f105dac29e66c81186962daf8b Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 27 Jan 2021 18:05:44 +0300 Subject: [PATCH 1/2] fix: bloated runtime --- src/index.js | 11 ++++++++--- test/cases/runtime/expected/webpack-5/runtime~main.js | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/index.js b/src/index.js index b9a88d0b..451415b3 100644 --- a/src/index.js +++ b/src/index.js @@ -477,10 +477,15 @@ class MiniCssExtractPlugin { MODULE_TYPE, 'mini-css', `${webpack.RuntimeGlobals.require}.miniCssF`, - (referencedChunk) => - referencedChunk.canBeInitial() + (referencedChunk) => { + if (!referencedChunk.contentHash[MODULE_TYPE]) { + return ''; + } + + return referencedChunk.canBeInitial() ? this.options.filename - : this.options.chunkFilename, + : this.options.chunkFilename; + }, true ) ); diff --git a/test/cases/runtime/expected/webpack-5/runtime~main.js b/test/cases/runtime/expected/webpack-5/runtime~main.js index 13ea0c61..181c1360 100644 --- a/test/cases/runtime/expected/webpack-5/runtime~main.js +++ b/test/cases/runtime/expected/webpack-5/runtime~main.js @@ -101,7 +101,7 @@ /******/ // This function allow to reference all chunks /******/ __webpack_require__.miniCssF = (chunkId) => { /******/ // return url for filenames based on template -/******/ return "" + ({"0":"main","1":"runtime~main"}[chunkId] || chunkId) + "." + {"0":"a7263f8f763dcf4051bc"}[chunkId] + ".css"; +/******/ return "" + "main" + "." + "a7263f8f763dcf4051bc" + ".css"; /******/ }; /******/ })(); /******/ From b9376daaf1bd30e06abf0e0c909b97fe6442f4ed Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 27 Jan 2021 18:23:53 +0300 Subject: [PATCH 2/2] test: fix --- src/index.js | 2 +- test/cases/hmr/expected/webpack-5/main.js | 2 +- test/cases/hmr/webpack.config.js | 1 + test/cases/insert-function/expected/webpack-5/main.js | 4 +--- test/cases/insert-string/expected/webpack-5/main.js | 4 +--- test/cases/insert-undefined/expected/webpack-5/main.js | 4 +--- 6 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/index.js b/src/index.js index 451415b3..c27da884 100644 --- a/src/index.js +++ b/src/index.js @@ -479,7 +479,7 @@ class MiniCssExtractPlugin { `${webpack.RuntimeGlobals.require}.miniCssF`, (referencedChunk) => { if (!referencedChunk.contentHash[MODULE_TYPE]) { - return ''; + return false; } return referencedChunk.canBeInitial() diff --git a/test/cases/hmr/expected/webpack-5/main.js b/test/cases/hmr/expected/webpack-5/main.js index 3cc77dda..83afefff 100644 --- a/test/cases/hmr/expected/webpack-5/main.js +++ b/test/cases/hmr/expected/webpack-5/main.js @@ -358,7 +358,7 @@ module.exports = function (urlString) { /******/ // This function allow to reference all chunks /******/ __webpack_require__.miniCssF = (chunkId) => { /******/ // return url for filenames based on template -/******/ return "" + "main" + ".css"; +/******/ return undefined; /******/ }; /******/ })(); /******/ diff --git a/test/cases/hmr/webpack.config.js b/test/cases/hmr/webpack.config.js index f21d6bb8..c64ce9ea 100644 --- a/test/cases/hmr/webpack.config.js +++ b/test/cases/hmr/webpack.config.js @@ -4,6 +4,7 @@ import Self from '../../../src'; module.exports = { entry: './index.css', + mode: 'development', module: { rules: [ { diff --git a/test/cases/insert-function/expected/webpack-5/main.js b/test/cases/insert-function/expected/webpack-5/main.js index e273ce62..f0ab3061 100644 --- a/test/cases/insert-function/expected/webpack-5/main.js +++ b/test/cases/insert-function/expected/webpack-5/main.js @@ -54,10 +54,8 @@ /******/ (() => { /******/ // This function allow to reference all chunks /******/ __webpack_require__.miniCssF = (chunkId) => { -/******/ // return url for filenames not based on template -/******/ if (chunkId === 1) return "1.css"; /******/ // return url for filenames based on template -/******/ return "" + "main" + ".css"; +/******/ return "" + chunkId + ".css"; /******/ }; /******/ })(); /******/ diff --git a/test/cases/insert-string/expected/webpack-5/main.js b/test/cases/insert-string/expected/webpack-5/main.js index 21fd7a79..581022c8 100644 --- a/test/cases/insert-string/expected/webpack-5/main.js +++ b/test/cases/insert-string/expected/webpack-5/main.js @@ -54,10 +54,8 @@ /******/ (() => { /******/ // This function allow to reference all chunks /******/ __webpack_require__.miniCssF = (chunkId) => { -/******/ // return url for filenames not based on template -/******/ if (chunkId === 1) return "1.css"; /******/ // return url for filenames based on template -/******/ return "" + "main" + ".css"; +/******/ return "" + chunkId + ".css"; /******/ }; /******/ })(); /******/ diff --git a/test/cases/insert-undefined/expected/webpack-5/main.js b/test/cases/insert-undefined/expected/webpack-5/main.js index 2d7ef200..ffd6d783 100644 --- a/test/cases/insert-undefined/expected/webpack-5/main.js +++ b/test/cases/insert-undefined/expected/webpack-5/main.js @@ -54,10 +54,8 @@ /******/ (() => { /******/ // This function allow to reference all chunks /******/ __webpack_require__.miniCssF = (chunkId) => { -/******/ // return url for filenames not based on template -/******/ if (chunkId === 1) return "1.css"; /******/ // return url for filenames based on template -/******/ return "" + "main" + ".css"; +/******/ return "" + chunkId + ".css"; /******/ }; /******/ })(); /******/