From ac6084130595bb4319643b5efb245c9f4dad37a2 Mon Sep 17 00:00:00 2001 From: Luca Schneider Date: Wed, 25 Mar 2026 09:53:13 +0100 Subject: [PATCH 1/2] test: add failing test for match-resource url resolution --- .../match-resource-url/expected/main.css | 4 +++ test/cases/match-resource-url/icon.svg | 1 + test/cases/match-resource-url/index.js | 1 + test/cases/match-resource-url/source.txt | 3 +++ test/cases/match-resource-url/test.filter.js | 3 +++ .../match-resource-url/webpack.config.js | 26 +++++++++++++++++++ 6 files changed, 38 insertions(+) create mode 100644 test/cases/match-resource-url/expected/main.css create mode 100644 test/cases/match-resource-url/icon.svg create mode 100644 test/cases/match-resource-url/index.js create mode 100644 test/cases/match-resource-url/source.txt create mode 100644 test/cases/match-resource-url/test.filter.js create mode 100644 test/cases/match-resource-url/webpack.config.js diff --git a/test/cases/match-resource-url/expected/main.css b/test/cases/match-resource-url/expected/main.css new file mode 100644 index 00000000..35a7a05d --- /dev/null +++ b/test/cases/match-resource-url/expected/main.css @@ -0,0 +1,4 @@ +body { + background-image: url(static/icon.svg); +} + diff --git a/test/cases/match-resource-url/icon.svg b/test/cases/match-resource-url/icon.svg new file mode 100644 index 00000000..3b4bcabe --- /dev/null +++ b/test/cases/match-resource-url/icon.svg @@ -0,0 +1 @@ + diff --git a/test/cases/match-resource-url/index.js b/test/cases/match-resource-url/index.js new file mode 100644 index 00000000..0bb9d665 --- /dev/null +++ b/test/cases/match-resource-url/index.js @@ -0,0 +1 @@ +import "./virtual.css!=!./source.txt"; diff --git a/test/cases/match-resource-url/source.txt b/test/cases/match-resource-url/source.txt new file mode 100644 index 00000000..8f8d8336 --- /dev/null +++ b/test/cases/match-resource-url/source.txt @@ -0,0 +1,3 @@ +body { + background-image: url(./icon.svg); +} diff --git a/test/cases/match-resource-url/test.filter.js b/test/cases/match-resource-url/test.filter.js new file mode 100644 index 00000000..ffca14d7 --- /dev/null +++ b/test/cases/match-resource-url/test.filter.js @@ -0,0 +1,3 @@ +import yn from "../../helpers/yn"; + +module.exports = () => !yn(process.env.OLD_API); diff --git a/test/cases/match-resource-url/webpack.config.js b/test/cases/match-resource-url/webpack.config.js new file mode 100644 index 00000000..c9cc91c2 --- /dev/null +++ b/test/cases/match-resource-url/webpack.config.js @@ -0,0 +1,26 @@ +import Self from "../../../src"; + +module.exports = { + entry: "./index.js", + module: { + rules: [ + { + test: /\.css$/, + use: [Self.loader, "css-loader"], + }, + { + test: /\.svg$/, + issuer: /\.css$/, + type: "asset/resource", + generator: { + filename: "static/[name][ext]", + }, + }, + ], + }, + plugins: [ + new Self({ + filename: "[name].css", + }), + ], +}; From db5b3b7d18891fbfda5946c7021c1f68f88a0931 Mon Sep 17 00:00:00 2001 From: Luca Schneider Date: Wed, 25 Mar 2026 09:54:00 +0100 Subject: [PATCH 2/2] fix: use matchResource for importModule when available --- src/loader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/loader.js b/src/loader.js index 8a387946..fb51cbba 100644 --- a/src/loader.js +++ b/src/loader.js @@ -361,7 +361,7 @@ function pitch(request) { } this.importModule( - `${this.resourcePath}.webpack[javascript/auto]!=!!!${request}`, + `${this._module.matchResource || this.resourcePath}.webpack[javascript/auto]!=!!!${request}`, { layer: options.layer, publicPath: /** @type {string} */ (publicPathForExtract),