Skip to content

Commit 386a52d

Browse files
committed
fix(ssrTransform): sourcemaps with multiple sources
1 parent 07bc489 commit 386a52d

File tree

4 files changed

+74
-4
lines changed

4 files changed

+74
-4
lines changed

packages/vite/src/node/ssr/__tests__/fixtures/bundled-with-sourcemaps/bundle.js

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/vite/src/node/ssr/__tests__/fixtures/bundled-with-sourcemaps/bundle.js.map

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
import { expect, test } from 'vitest'
1+
import { readFileSync } from 'node:fs'
2+
import { assert, expect, test } from 'vitest'
3+
import type { SourceMap } from 'rollup'
24
import { transformWithEsbuild } from '../../plugins/esbuild'
35
import { ssrTransform } from '../ssrTransform'
46

@@ -411,11 +413,33 @@ test('sourcemap source', async () => {
411413
'input.js',
412414
'export const a = 1 /* */',
413415
)
414-
)?.map
416+
)?.map as SourceMap
417+
415418
expect(map?.sources).toStrictEqual(['input.js'])
416419
expect(map?.sourcesContent).toStrictEqual(['export const a = 1 /* */'])
417420
})
418421

422+
test('sourcemap with multiple sources', async () => {
423+
const code = readFixture('bundle.js')
424+
const map = readFixture('bundle.js.map')
425+
426+
const result = await ssrTransform(code, JSON.parse(map), '', code)
427+
assert(result?.map)
428+
429+
const { sources } = result.map as SourceMap
430+
expect(sources).toContain('./first.ts')
431+
expect(sources).toContain('./second.ts')
432+
433+
function readFixture(filename: string) {
434+
const url = new URL(
435+
`./fixtures/bundled-with-sourcemaps/${filename}`,
436+
import.meta.url,
437+
)
438+
439+
return readFileSync(url.pathname, 'utf8')
440+
}
441+
})
442+
419443
test('overwrite bindings', async () => {
420444
expect(
421445
await ssrTransformSimpleCode(

packages/vite/src/node/utils.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,6 @@ export function combineSourcemaps(
852852
}
853853
return newSourcemaps
854854
})
855-
const escapedFilename = escapeToLinuxLikePath(filename)
856855

857856
// We don't declare type here so we can convert/fake/map as RawSourceMap
858857
let map //: SourceMap
@@ -863,7 +862,7 @@ export function combineSourcemaps(
863862
map = remapping(sourcemapList, () => null)
864863
} else {
865864
map = remapping(sourcemapList[0], function loader(sourcefile) {
866-
if (sourcefile === escapedFilename && sourcemapList[mapIndex]) {
865+
if (sourcemapList[mapIndex]) {
867866
return sourcemapList[mapIndex++]
868867
} else {
869868
return null

0 commit comments

Comments
 (0)