Skip to content

Commit 1910872

Browse files
authored
fix(sourceMap): use absolute paths in dev for VS Code debugging (#6492)
1 parent 36145cc commit 1910872

File tree

5 files changed

+21
-12
lines changed

5 files changed

+21
-12
lines changed

packages/compat/webpack/tests/__snapshots__/default.test.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ exports[`applyDefaultPlugins > should apply default plugins correctly 1`] = `
289289
"output": {
290290
"assetModuleFilename": "static/assets/[name].[contenthash:8][ext]",
291291
"chunkFilename": "static/js/async/[name].js",
292-
"devtoolModuleFilenameTemplate": "[absolute-resource-path]",
292+
"devtoolModuleFilenameTemplate": [Function],
293293
"filename": "static/js/[name].js",
294294
"hashFunction": "xxhash64",
295295
"path": "<ROOT>/packages/compat/webpack/tests/dist",

packages/core/src/plugins/sourceMap.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,22 @@ export const pluginSourceMap = (): RsbuildPlugin => ({
3333
return typeof sourceMap === 'object' && sourceMap.css;
3434
};
3535

36-
api.modifyBundlerChain((chain, { bundler, environment }) => {
36+
api.modifyBundlerChain((chain, { bundler, environment, isDev, target }) => {
3737
const { config } = environment;
38-
const devtool = getDevtool(config);
3938

40-
chain
41-
.devtool(devtool)
42-
.output.devtoolModuleFilenameTemplate(DEFAULT_SOURCE_MAP_TEMPLATE);
39+
const devtool = getDevtool(config);
40+
chain.devtool(devtool);
41+
42+
if (isDev && target === 'web') {
43+
// Use POSIX-style absolute paths in source maps during development
44+
// This ensures VS Code and browser debuggers can correctly resolve breakpoints
45+
chain.output.devtoolModuleFilenameTemplate(
46+
(info: { absoluteResourcePath: string }) =>
47+
toPosixPath(info.absoluteResourcePath),
48+
);
49+
} else {
50+
chain.output.devtoolModuleFilenameTemplate(DEFAULT_SOURCE_MAP_TEMPLATE);
51+
}
4352

4453
// When JS source map is disabled, but CSS source map is enabled,
4554
// add `SourceMapDevToolPlugin` to let Rspack generate CSS source map.
@@ -69,8 +78,8 @@ export const pluginSourceMap = (): RsbuildPlugin => ({
6978
return;
7079
}
7180

72-
// If devtoolModuleFilenameTemplate is not the default template,
73-
// which means users want to customize it, skip the default processing.
81+
// If devtoolModuleFilenameTemplate is not the default absolute path template,
82+
// we do not need to convert it to relative path.
7483
if (
7584
compilation.outputOptions.devtoolModuleFilenameTemplate !==
7685
DEFAULT_SOURCE_MAP_TEMPLATE

packages/core/tests/__snapshots__/builder.test.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ exports[`should use Rspack as the default bundler > apply Rspack correctly 1`] =
405405
"output": {
406406
"assetModuleFilename": "static/assets/[name].[contenthash:8][ext]",
407407
"chunkFilename": "static/js/async/[name].js",
408-
"devtoolModuleFilenameTemplate": "[absolute-resource-path]",
408+
"devtoolModuleFilenameTemplate": [Function],
409409
"filename": "static/js/[name].js",
410410
"hashFunction": "xxhash64",
411411
"path": "<ROOT>/dist",

packages/core/tests/__snapshots__/default.test.ts.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ exports[`applyDefaultPlugins > should apply default plugins correctly 1`] = `
405405
"output": {
406406
"assetModuleFilename": "static/assets/[name].[contenthash:8][ext]",
407407
"chunkFilename": "static/js/async/[name].js",
408-
"devtoolModuleFilenameTemplate": "[absolute-resource-path]",
408+
"devtoolModuleFilenameTemplate": [Function],
409409
"filename": "static/js/[name].js",
410410
"hashFunction": "xxhash64",
411411
"path": "<ROOT>/packages/core/tests/dist",
@@ -1927,7 +1927,7 @@ exports[`tools.rspack > should match snapshot 1`] = `
19271927
"output": {
19281928
"assetModuleFilename": "static/assets/[name].[contenthash:8][ext]",
19291929
"chunkFilename": "static/js/async/[name].js",
1930-
"devtoolModuleFilenameTemplate": "[absolute-resource-path]",
1930+
"devtoolModuleFilenameTemplate": [Function],
19311931
"filename": "static/js/[name].js",
19321932
"hashFunction": "xxhash64",
19331933
"path": "<ROOT>/packages/core/tests/dist",

packages/core/tests/__snapshots__/environments.test.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1836,7 +1836,7 @@ exports[`environment config > tools.rspack / bundlerChain can be configured in e
18361836
"output": {
18371837
"assetModuleFilename": "static/assets/[name].[contenthash:8][ext]",
18381838
"chunkFilename": "static/js/async/[name].js",
1839-
"devtoolModuleFilenameTemplate": "[absolute-resource-path]",
1839+
"devtoolModuleFilenameTemplate": [Function],
18401840
"filename": "static/js/[name].js",
18411841
"hashFunction": "xxhash64",
18421842
"path": "<ROOT>/dist",

0 commit comments

Comments
 (0)