diff --git a/packages/rspack-test-tools/tests/__snapshots__/StatsOutput.test.js.snap b/packages/rspack-test-tools/tests/__snapshots__/StatsOutput.test.js.snap index d32cb2fe93e..9b95e930442 100644 --- a/packages/rspack-test-tools/tests/__snapshots__/StatsOutput.test.js.snap +++ b/packages/rspack-test-tools/tests/__snapshots__/StatsOutput.test.js.snap @@ -207,6 +207,12 @@ exports[`statsOutput statsOutput/logging-loader should print correct stats for 1 " `; +exports[`statsOutput statsOutput/match-resource-data-url should print correct stats for 1`] = ` +"runtime modules 677 bytes 3 modules +./index.js 145 bytes [built] [code generated] +./a.js!=!data:javascript,var __looooooooo.. 93 bytes [built] [code generated]" +`; + exports[`statsOutput statsOutput/minify-error should print correct stats for 1`] = ` "ERROR in × JavaScript parsing error: Expected a semicolon ╭─[1:8] diff --git a/packages/rspack-test-tools/tests/statsOutputCases/match-resource-data-url/index.js b/packages/rspack-test-tools/tests/statsOutputCases/match-resource-data-url/index.js new file mode 100644 index 00000000000..561ff76144e --- /dev/null +++ b/packages/rspack-test-tools/tests/statsOutputCases/match-resource-data-url/index.js @@ -0,0 +1,2 @@ +import name from "./a.js!=!data:javascript,var __looooooooooooong_variable_name__ = 1;export default __looooooooooooong_variable_name__;"; +name; diff --git a/packages/rspack-test-tools/tests/statsOutputCases/match-resource-data-url/rspack.config.js b/packages/rspack-test-tools/tests/statsOutputCases/match-resource-data-url/rspack.config.js new file mode 100644 index 00000000000..6fd77db4fca --- /dev/null +++ b/packages/rspack-test-tools/tests/statsOutputCases/match-resource-data-url/rspack.config.js @@ -0,0 +1,11 @@ +/** + * @type {import('@rspack/core').RspackOptions} + */ +module.exports = { + entry: "./index.js", + mode: "development", + stats: { + all: false, + modules: true, + } +}; diff --git a/packages/rspack/src/stats/DefaultStatsPrinterPlugin.ts b/packages/rspack/src/stats/DefaultStatsPrinterPlugin.ts index ef26e249432..10d6f014b74 100644 --- a/packages/rspack/src/stats/DefaultStatsPrinterPlugin.ts +++ b/packages/rspack/src/stats/DefaultStatsPrinterPlugin.ts @@ -45,7 +45,12 @@ const getResourceName = (resource: string) => { }; const getModuleName = (name: string) => { - const [, prefix, resource] = /^(.*!)?([^!]*)$/.exec(name) || []; + const matchResourceMatch = /^([^!]+)!=!/.exec(name); + const n = matchResourceMatch + ? matchResourceMatch[0] + + getResourceName(name.slice(matchResourceMatch[0].length)) + : name; + const [, prefix, resource] = /^(.*!)?([^!]*)$/.exec(n) || []; return [prefix, getResourceName(resource)]; };