Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
25 changes: 25 additions & 0 deletions packages/plugin-rsc/e2e/sourcemap.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { expect, test } from '@playwright/test'
import { x } from 'tinyexec'
import { setupInlineFixture } from './fixture'

test.describe('sourcemap', () => {
const root = 'examples/e2e/temp/sourcemap'

test.beforeAll(async () => {
await setupInlineFixture({
src: 'examples/starter',
dest: root,
})
})

test('build without broken sourcemap warnings', async () => {
const result = await x('pnpm', ['build', '--sourcemap'], {
nodeOptions: { cwd: root },
})

expect(result.exitCode).toBe(0)
expect(result.stdout + result.stderr).not.toContain(
'Sourcemap is likely to be incorrect',
)
})
})
25 changes: 19 additions & 6 deletions packages/plugin-rsc/src/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,12 @@ export function vitePluginRscMinimal(
if (code.includes('__vite_rsc_raw_import__')) {
// inject dynamic import last to avoid Vite adding `?import` query
// to client references (and browser mode server references)
return code.replace('__vite_rsc_raw_import__', 'import')
const output = new MagicString(code)
output.replace('__vite_rsc_raw_import__', 'import')
return {
code: output.toString(),
map: output.generateMap({ hires: 'boundary' }),
}
}
},
},
Expand Down Expand Up @@ -1247,11 +1252,15 @@ export function createRpcClient(params) {
BUILD_ASSETS_MANIFEST_NAME,
),
)
code = code.replaceAll(
const output = new MagicString(code)
output.replaceAll(
'virtual:vite-rsc/assets-manifest',
() => replacement,
)
return { code }
return {
code: output.toString(),
map: output.generateMap({ hires: 'boundary' }),
}
}
return
},
Expand Down Expand Up @@ -1396,13 +1405,17 @@ function globalAsyncLocalStoragePlugin(): Plugin[] {
!code.includes('__viteRscAsyncHooks')
) {
// for build, we cannot use `import` as it confuses rollup commonjs plugin.
return (
const output = new MagicString(code)
output.prepend(
(this.environment.mode === 'build' && !isRolldownVite
? `const __viteRscAsyncHooks = require("node:async_hooks");`
: `import * as __viteRscAsyncHooks from "node:async_hooks";`) +
`globalThis.AsyncLocalStorage = __viteRscAsyncHooks.AsyncLocalStorage;` +
code
`globalThis.AsyncLocalStorage = __viteRscAsyncHooks.AsyncLocalStorage;`,
)
return {
code: output.toString(),
map: output.generateMap({ hires: 'boundary' }),
}
}
},
},
Expand Down
Loading