From ad3729ba9d3fed328a170340eafb66e8c2a13bdc Mon Sep 17 00:00:00 2001 From: Alexander Akait <4567934+alexander-akait@users.noreply.github.com> Date: Thu, 16 Mar 2023 14:49:27 +0300 Subject: [PATCH] fix: module identifier, don't merge modules with different media/suppors/layer (#1021) --- src/index.js | 2 +- test/cases/issue-css-loader-1503-1/dark.css | 3 ++ .../issue-css-loader-1503-1/expected/dark.css | 4 +++ .../expected/index.css | 8 +++++ test/cases/issue-css-loader-1503-1/index.css | 1 + .../issue-css-loader-1503-1/webpack.config.js | 31 +++++++++++++++++++ test/cases/issue-css-loader-1503-2/dark.css | 3 ++ .../issue-css-loader-1503-2/expected/dark.css | 4 +++ .../expected/index.css | 8 +++++ test/cases/issue-css-loader-1503-2/index.css | 1 + .../issue-css-loader-1503-2/webpack.config.js | 31 +++++++++++++++++++ test/cases/issue-css-loader-1503/dark.css | 3 ++ .../issue-css-loader-1503/expected/dark.css | 4 +++ .../issue-css-loader-1503/expected/index.css | 8 +++++ test/cases/issue-css-loader-1503/index.css | 1 + .../issue-css-loader-1503/webpack.config.js | 31 +++++++++++++++++++ 16 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 test/cases/issue-css-loader-1503-1/dark.css create mode 100644 test/cases/issue-css-loader-1503-1/expected/dark.css create mode 100644 test/cases/issue-css-loader-1503-1/expected/index.css create mode 100644 test/cases/issue-css-loader-1503-1/index.css create mode 100644 test/cases/issue-css-loader-1503-1/webpack.config.js create mode 100644 test/cases/issue-css-loader-1503-2/dark.css create mode 100644 test/cases/issue-css-loader-1503-2/expected/dark.css create mode 100644 test/cases/issue-css-loader-1503-2/expected/index.css create mode 100644 test/cases/issue-css-loader-1503-2/index.css create mode 100644 test/cases/issue-css-loader-1503-2/webpack.config.js create mode 100644 test/cases/issue-css-loader-1503/dark.css create mode 100644 test/cases/issue-css-loader-1503/expected/dark.css create mode 100644 test/cases/issue-css-loader-1503/expected/index.css create mode 100644 test/cases/issue-css-loader-1503/index.css create mode 100644 test/cases/issue-css-loader-1503/webpack.config.js diff --git a/src/index.js b/src/index.js index 6a5969e1..e20f93c2 100644 --- a/src/index.js +++ b/src/index.js @@ -165,7 +165,7 @@ class MiniCssExtractPlugin { } identifier() { - return `css|${this._identifier}|${this._identifierIndex}`; + return `css|${this._identifier}|${this._identifierIndex}|${this.layer}|${this.supports}|${this.media}}}`; } /** diff --git a/test/cases/issue-css-loader-1503-1/dark.css b/test/cases/issue-css-loader-1503-1/dark.css new file mode 100644 index 00000000..ff1323b1 --- /dev/null +++ b/test/cases/issue-css-loader-1503-1/dark.css @@ -0,0 +1,3 @@ +body { + background: black; +} diff --git a/test/cases/issue-css-loader-1503-1/expected/dark.css b/test/cases/issue-css-loader-1503-1/expected/dark.css new file mode 100644 index 00000000..e8518be8 --- /dev/null +++ b/test/cases/issue-css-loader-1503-1/expected/dark.css @@ -0,0 +1,4 @@ +body { + background: black; +} + diff --git a/test/cases/issue-css-loader-1503-1/expected/index.css b/test/cases/issue-css-loader-1503-1/expected/index.css new file mode 100644 index 00000000..b6e23f99 --- /dev/null +++ b/test/cases/issue-css-loader-1503-1/expected/index.css @@ -0,0 +1,8 @@ +@supports (display: flex) { +body { + background: black; +} + +} + + diff --git a/test/cases/issue-css-loader-1503-1/index.css b/test/cases/issue-css-loader-1503-1/index.css new file mode 100644 index 00000000..36f1d369 --- /dev/null +++ b/test/cases/issue-css-loader-1503-1/index.css @@ -0,0 +1 @@ +@import url("dark.css") supports(display: flex); diff --git a/test/cases/issue-css-loader-1503-1/webpack.config.js b/test/cases/issue-css-loader-1503-1/webpack.config.js new file mode 100644 index 00000000..8feb4cb7 --- /dev/null +++ b/test/cases/issue-css-loader-1503-1/webpack.config.js @@ -0,0 +1,31 @@ +import Self from "../../../src"; + +module.exports = { + entry: { + dark: "./dark.css", + index: "./index.css", + }, + module: { + rules: [ + { + test: /\.css$/, + use: [ + { + loader: Self.loader, + }, + { + loader: "css-loader", + options: { + modules: true, + }, + }, + ], + }, + ], + }, + plugins: [ + new Self({ + filename: "[name].css", + }), + ], +}; diff --git a/test/cases/issue-css-loader-1503-2/dark.css b/test/cases/issue-css-loader-1503-2/dark.css new file mode 100644 index 00000000..ff1323b1 --- /dev/null +++ b/test/cases/issue-css-loader-1503-2/dark.css @@ -0,0 +1,3 @@ +body { + background: black; +} diff --git a/test/cases/issue-css-loader-1503-2/expected/dark.css b/test/cases/issue-css-loader-1503-2/expected/dark.css new file mode 100644 index 00000000..e8518be8 --- /dev/null +++ b/test/cases/issue-css-loader-1503-2/expected/dark.css @@ -0,0 +1,4 @@ +body { + background: black; +} + diff --git a/test/cases/issue-css-loader-1503-2/expected/index.css b/test/cases/issue-css-loader-1503-2/expected/index.css new file mode 100644 index 00000000..fb259abd --- /dev/null +++ b/test/cases/issue-css-loader-1503-2/expected/index.css @@ -0,0 +1,8 @@ +@layer framework.component { +body { + background: black; +} + +} + + diff --git a/test/cases/issue-css-loader-1503-2/index.css b/test/cases/issue-css-loader-1503-2/index.css new file mode 100644 index 00000000..80a1ddcc --- /dev/null +++ b/test/cases/issue-css-loader-1503-2/index.css @@ -0,0 +1 @@ +@import url("dark.css") layer(framework.component); diff --git a/test/cases/issue-css-loader-1503-2/webpack.config.js b/test/cases/issue-css-loader-1503-2/webpack.config.js new file mode 100644 index 00000000..8feb4cb7 --- /dev/null +++ b/test/cases/issue-css-loader-1503-2/webpack.config.js @@ -0,0 +1,31 @@ +import Self from "../../../src"; + +module.exports = { + entry: { + dark: "./dark.css", + index: "./index.css", + }, + module: { + rules: [ + { + test: /\.css$/, + use: [ + { + loader: Self.loader, + }, + { + loader: "css-loader", + options: { + modules: true, + }, + }, + ], + }, + ], + }, + plugins: [ + new Self({ + filename: "[name].css", + }), + ], +}; diff --git a/test/cases/issue-css-loader-1503/dark.css b/test/cases/issue-css-loader-1503/dark.css new file mode 100644 index 00000000..ff1323b1 --- /dev/null +++ b/test/cases/issue-css-loader-1503/dark.css @@ -0,0 +1,3 @@ +body { + background: black; +} diff --git a/test/cases/issue-css-loader-1503/expected/dark.css b/test/cases/issue-css-loader-1503/expected/dark.css new file mode 100644 index 00000000..e8518be8 --- /dev/null +++ b/test/cases/issue-css-loader-1503/expected/dark.css @@ -0,0 +1,4 @@ +body { + background: black; +} + diff --git a/test/cases/issue-css-loader-1503/expected/index.css b/test/cases/issue-css-loader-1503/expected/index.css new file mode 100644 index 00000000..b8e4b9f0 --- /dev/null +++ b/test/cases/issue-css-loader-1503/expected/index.css @@ -0,0 +1,8 @@ +@media (prefers-color-scheme: dark) { +body { + background: black; +} + +} + + diff --git a/test/cases/issue-css-loader-1503/index.css b/test/cases/issue-css-loader-1503/index.css new file mode 100644 index 00000000..9551bc78 --- /dev/null +++ b/test/cases/issue-css-loader-1503/index.css @@ -0,0 +1 @@ +@import "./dark.css" (prefers-color-scheme: dark); diff --git a/test/cases/issue-css-loader-1503/webpack.config.js b/test/cases/issue-css-loader-1503/webpack.config.js new file mode 100644 index 00000000..8feb4cb7 --- /dev/null +++ b/test/cases/issue-css-loader-1503/webpack.config.js @@ -0,0 +1,31 @@ +import Self from "../../../src"; + +module.exports = { + entry: { + dark: "./dark.css", + index: "./index.css", + }, + module: { + rules: [ + { + test: /\.css$/, + use: [ + { + loader: Self.loader, + }, + { + loader: "css-loader", + options: { + modules: true, + }, + }, + ], + }, + ], + }, + plugins: [ + new Self({ + filename: "[name].css", + }), + ], +};