Skip to content

Commit d7bb603

Browse files
authored
chore[react-devtools/extensions]: make source maps url relative (#29886)
This adds few changes: 1. We are going to ship source maps only for 2 artifacts: `installHook.js` and `react_devtools_backend_compact.js`, because it is only these modules that can patch console and be visible to the user via stack traces in console. We need to ship source maps to be able to use `ignoreList` feature in source maps, so we can actually hide these from stack traces. | Before | After | |--------|--------| | ![Screenshot 2024-06-13 at 17 44 25](https://github.com/facebook/react/assets/28902667/464e097b-a95e-47eb-967c-0579daad316b) | ![Screenshot 2024-06-13 at 17 39 53](https://github.com/facebook/react/assets/28902667/e4afe642-d65b-4296-a2cf-26c0b925ebf2) | 2. The `"sources"` field in source map will have relative urls listed, instead of absolute with `webpack://` protocol. This will move the sources to the `React Developer Tools` frame in `Sources` panel, instead of `webpack://`. | Before | After | |--------|--------| | ![Screenshot 2024-06-13 at 17 48 24](https://github.com/facebook/react/assets/28902667/a18edad2-5b4e-4ad7-8a7a-8b389c2edf92) | ![Screenshot 2024-06-13 at 17 49 41](https://github.com/facebook/react/assets/28902667/5db491f7-5d1d-4155-9910-16ac4384d34e) | > [!NOTE] > I still have 1 unresolved issue with shipping source maps in extension build, and it is related to Firefox, which can't find them in the extension bundle and returns 404, even though urls are relative and I can actually open them via unique address like `moz-extension://<extension-id>/build/intallHook.js.map` ¯\\\_(ツ)\_/¯
1 parent f14d7f0 commit d7bb603

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

Diff for: packages/react-devtools-extensions/webpack.backend.js

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
const {resolve} = require('path');
3+
const {resolve, isAbsolute, relative} = require('path');
44
const Webpack = require('webpack');
55

66
const {resolveFeatureFlags} = require('react-devtools-shared/buildUtils');
@@ -93,6 +93,17 @@ module.exports = {
9393
new Webpack.SourceMapDevToolPlugin({
9494
filename: '[file].map',
9595
noSources: !__DEV__,
96+
// https://github.com/webpack/webpack/issues/3603#issuecomment-1743147144
97+
moduleFilenameTemplate(info) {
98+
const {absoluteResourcePath, namespace, resourcePath} = info;
99+
100+
if (isAbsolute(absoluteResourcePath)) {
101+
return relative(__dirname + '/build', absoluteResourcePath);
102+
}
103+
104+
// Mimic Webpack's default behavior:
105+
return `webpack://${namespace}/${resourcePath}`;
106+
},
96107
}),
97108
new SourceMapIgnoreListPlugin({
98109
shouldIgnoreSource: () => !__DEV__,

Diff for: packages/react-devtools-extensions/webpack.config.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
const {resolve} = require('path');
3+
const {resolve, isAbsolute, relative} = require('path');
44
const Webpack = require('webpack');
55
const TerserPlugin = require('terser-webpack-plugin');
66
const {
@@ -137,7 +137,19 @@ module.exports = {
137137
}),
138138
new Webpack.SourceMapDevToolPlugin({
139139
filename: '[file].map',
140+
include: 'installHook.js',
140141
noSources: !__DEV__,
142+
// https://github.com/webpack/webpack/issues/3603#issuecomment-1743147144
143+
moduleFilenameTemplate(info) {
144+
const {absoluteResourcePath, namespace, resourcePath} = info;
145+
146+
if (isAbsolute(absoluteResourcePath)) {
147+
return relative(__dirname + '/build', absoluteResourcePath);
148+
}
149+
150+
// Mimic Webpack's default behavior:
151+
return `webpack://${namespace}/${resourcePath}`;
152+
},
141153
}),
142154
new SourceMapIgnoreListPlugin({
143155
shouldIgnoreSource: (assetName, _source) => {

0 commit comments

Comments
 (0)