Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/vite/src/node/plugins/importAnalysisBuild.ts
Original file line number Diff line number Diff line change
Expand Up @@ -711,11 +711,15 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin {
source: chunk.fileName,
hires: 'boundary',
})
const originalFile = chunk.map.file
const map = combineSourcemaps(chunk.fileName, [
nextMap as RawSourceMap,
chunk.map as RawSourceMap,
]) as SourceMap
map.toUrl = () => genSourceMapUrl(map)
if (originalFile) {
map.file = originalFile
}

const originalDebugId = chunk.map.debugId
chunk.map = map
Expand Down
21 changes: 21 additions & 0 deletions playground/js-sourcemap/__tests__/js-sourcemap.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,27 @@ describe.runIf(isBuild)('build tests', () => {
)
})

test('sourcemap file field is consistent (#20853)', async () => {
const assets = listAssets()
const mapAssets = assets.filter((asset) => asset.endsWith('.js.map'))

for (const mapAsset of mapAssets) {
const mapContent = readFile(`dist/assets/${mapAsset}`)
const mapObj = JSON.parse(mapContent)

if (mapObj.file) {
expect(
mapObj.file,
`Sourcemap file field for ${mapAsset} should not include directory prefix`,
).not.toMatch(/^assets\//)
expect(
mapObj.file,
`Sourcemap file field for ${mapAsset} should be just the filename`,
).toMatch(/^[^/]+\.js$/)
}
}
})

test('__vite__mapDeps injected after banner', async () => {
const js = findAssetFile(/after-preload-dynamic-hashbang-[-\w]{8}\.js$/)
expect(js.split('\n').slice(0, 2)).toEqual([
Expand Down