Skip to content

Commit

Permalink
fix: use relative paths in sources for transformed source maps (#12079
Browse files Browse the repository at this point in the history
)
  • Loading branch information
bmeurer authored Feb 27, 2023
1 parent b90bc1f commit bcbc582
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 11 deletions.
4 changes: 0 additions & 4 deletions packages/vite/src/node/plugins/esbuild.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import {
createFilter,
ensureWatchedFile,
generateCodeFrame,
toUpperCaseDriveLetter,
} from '../utils'
import type { ResolvedConfig, ViteDevServer } from '..'
import type { Plugin } from '../plugin'
Expand Down Expand Up @@ -192,9 +191,6 @@ export async function transformWithEsbuild(
? JSON.parse(result.map)
: { mappings: '' }
}
if (Array.isArray(map.sources)) {
map.sources = map.sources.map((it) => toUpperCaseDriveLetter(it))
}
return {
...result,
map,
Expand Down
21 changes: 21 additions & 0 deletions packages/vite/src/node/server/transformRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,27 @@ async function loadAndTransform(
if (map.mappings && !map.sourcesContent) {
await injectSourcesContent(map, mod.file, logger)
}
for (
let sourcesIndex = 0;
sourcesIndex < map.sources.length;
++sourcesIndex
) {
const sourcePath = map.sources[sourcesIndex]

// Rewrite sources to relative paths to give debuggers the chance
// to resolve and display them in a meaningful way (rather than
// with absolute paths).
if (
sourcePath &&
path.isAbsolute(sourcePath) &&
path.isAbsolute(mod.file)
) {
map.sources[sourcesIndex] = path.relative(
path.dirname(mod.file),
sourcePath,
)
}
}
}

const result =
Expand Down
4 changes: 0 additions & 4 deletions packages/vite/src/node/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -909,10 +909,6 @@ export function arraify<T>(target: T | T[]): T[] {
return Array.isArray(target) ? target : [target]
}

export function toUpperCaseDriveLetter(pathName: string): string {
return pathName.replace(/^\w:/, (letter) => letter.toUpperCase())
}

// Taken from https://stackoverflow.com/a/36328890
export const multilineCommentsRE = /\/\*[^*]*\*+(?:[^/*][^*]*\*+)*\//g
export const singlelineCommentsRE = /\/\/.*/g
Expand Down
4 changes: 2 additions & 2 deletions playground/css-sourcemap/__tests__/css-sourcemap.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ describe.runIf(isServe)('serve', () => {
{
"mappings": "AAAA;EACE,UAAU;AACZ;;ACAA;EACE,UAAU;AACZ",
"sources": [
"/root/be-imported.css",
"/root/linked-with-import.css",
"be-imported.css",
"linked-with-import.css",
],
"sourcesContent": [
".be-imported {
Expand Down
2 changes: 1 addition & 1 deletion playground/js-sourcemap/__tests__/js-sourcemap.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ if (!isBuild) {
{
"mappings": "AAAO,aAAM,MAAM;",
"sources": [
"/root/bar.ts",
"bar.ts",
],
"sourcesContent": [
"export const bar = 'bar'
Expand Down

0 comments on commit bcbc582

Please sign in to comment.