Skip to content

Commit 831f771

Browse files
fix: order of @import with pathinfo (#815)
1 parent 58637ca commit 831f771

File tree

20 files changed

+843
-744
lines changed

20 files changed

+843
-744
lines changed

package-lock.json

Lines changed: 747 additions & 708 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"release": "standard-version",
3030
"security": "npm audit --production",
3131
"test:only": "cross-env NODE_ENV=test jest",
32+
"test:only:experimental": "EXPERIMENTAL_USE_IMPORT_MODULE=true cross-env NODE_ENV=test jest",
3233
"test:watch": "npm run test:only -- --watch",
3334
"test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
3435
"test:manual": "npm run build && webpack serve ./test/manual/src/index.js --open --config ./test/manual/webpack.config.js",

src/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -989,6 +989,7 @@ class MiniCssExtractPlugin {
989989
let content = module.content.toString();
990990

991991
const readableIdentifier = module.readableIdentifier(requestShortener);
992+
const startsWithAtRuleImport = /^@import url/.test(content);
992993

993994
if (compilation.outputOptions.pathinfo) {
994995
// From https://github.com/webpack/webpack/blob/29eff8a74ecc2f87517b627dee451c2af9ed3f3f/lib/ModuleInfoHeaderPlugin.js#L191-L194
@@ -999,7 +1000,7 @@ class MiniCssExtractPlugin {
9991000
content = headerStr + content;
10001001
}
10011002

1002-
if (/^@import url/.test(content)) {
1003+
if (startsWithAtRuleImport) {
10031004
// HACK for IE
10041005
// http://stackoverflow.com/a/14676665/1458162
10051006
if (module.media) {

test/cases/at-import-in-entry/a.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
body {
2+
font-family: "Manrope";
3+
}

test/cases/at-import-in-entry/b.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@import url(https://fonts.googleapis.com/css2?family=Manrope:wght@500;800&display=swap);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*!****************************************************************!*\
2+
!*** css ../../../node_modules/css-loader/dist/cjs.js!./b.css ***!
3+
\****************************************************************/
4+
@import url(https://fonts.googleapis.com/css2?family=Manrope:wght@500;800&display=swap);
5+
/*!****************************************************************!*\
6+
!*** css ../../../node_modules/css-loader/dist/cjs.js!./a.css ***!
7+
\****************************************************************/
8+
body {
9+
font-family: "Manrope";
10+
}
11+
12+
/*!********************************************************************!*\
13+
!*** css ../../../node_modules/css-loader/dist/cjs.js!./b.css (1) ***!
14+
\********************************************************************/
15+
16+
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import Self from "../../../src";
2+
3+
module.exports = {
4+
mode: "development",
5+
entry: ["./a.css", "./b.css"],
6+
output: {
7+
pathinfo: true,
8+
},
9+
module: {
10+
rules: [
11+
{
12+
test: /\.css$/,
13+
use: [Self.loader, "css-loader"],
14+
},
15+
],
16+
},
17+
plugins: [
18+
new Self({
19+
filename: "[name].css",
20+
}),
21+
],
22+
};

test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/main.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ __webpack_require__.r(__webpack_exports__);
7373
/******/
7474
/******/ /* webpack/runtime/getFullHash */
7575
/******/ (() => {
76-
/******/ __webpack_require__.h = () => ("ab3ada7332542b91ceb4")
76+
/******/ __webpack_require__.h = () => ("d67c698e3fd6a71ab1e8")
7777
/******/ })();
7878
/******/
7979
/******/ /* webpack/runtime/global */
@@ -308,12 +308,14 @@ __webpack_require__.r(__webpack_exports__);
308308
/******/ // add "moreModules" to the modules object,
309309
/******/ // then flag all "chunkIds" as loaded and fire callback
310310
/******/ var moduleId, chunkId, i = 0;
311-
/******/ for(moduleId in moreModules) {
312-
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
313-
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
311+
/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
312+
/******/ for(moduleId in moreModules) {
313+
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
314+
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
315+
/******/ }
314316
/******/ }
317+
/******/ if(runtime) var result = runtime(__webpack_require__);
315318
/******/ }
316-
/******/ if(runtime) var result = runtime(__webpack_require__);
317319
/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
318320
/******/ for(;i < chunkIds.length; i++) {
319321
/******/ chunkId = chunkIds[i];

0 commit comments

Comments
 (0)