diff --git a/packages/vite/src/node/plugins/importAnalysis.ts b/packages/vite/src/node/plugins/importAnalysis.ts index 6463023c55d258..4654e677c0f694 100644 --- a/packages/vite/src/node/plugins/importAnalysis.ts +++ b/packages/vite/src/node/plugins/importAnalysis.ts @@ -751,9 +751,8 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin { // normalize and rewrite accepted urls const normalizedAcceptedUrls = new Set() for (const { url, start, end } of acceptedUrls) { - const isRelative = url[0] === '.' const [normalized] = await moduleGraph.resolveUrl( - isRelative ? toAbsoluteUrl(url) : url, + toAbsoluteUrl(url), ssr, ) normalizedAcceptedUrls.add(normalized) diff --git a/packages/vite/src/node/plugins/importMetaGlob.ts b/packages/vite/src/node/plugins/importMetaGlob.ts index 4b6aa267261a6e..7ff08e544a78c6 100644 --- a/packages/vite/src/node/plugins/importMetaGlob.ts +++ b/packages/vite/src/node/plugins/importMetaGlob.ts @@ -355,7 +355,7 @@ export async function transformGlobImport( ): Promise { id = slash(id) root = slash(root) - const isVirtual = !isAbsolute(id) + const isVirtual = isVirtualModule(id) const dir = isVirtual ? undefined : dirname(id) const matches = await parseImportGlob( code, @@ -645,3 +645,8 @@ export function getCommonBase(globsResolved: string[]): null | string { return commonAncestor } + +export function isVirtualModule(id: string): boolean { + // https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention + return id.startsWith('virtual:') || id[0] === '\0' || !id.includes('/') +} diff --git a/playground/hmr/__tests__/hmr.spec.ts b/playground/hmr/__tests__/hmr.spec.ts index 5b8b2875b94afd..508d3d7de46fc6 100644 --- a/playground/hmr/__tests__/hmr.spec.ts +++ b/playground/hmr/__tests__/hmr.spec.ts @@ -9,7 +9,6 @@ import { removeFile, untilBrowserLogAfter, untilUpdated, - viteServer, viteTestUrl, } from '~utils' @@ -677,14 +676,6 @@ if (!isBuild) { expect(await btn.textContent()).toBe('Compteur 0') }) - test('virtual module in module graph', async () => { - const moduleGraph = viteServer.moduleGraph - const virtualId = Array.from(moduleGraph.idToModuleMap.keys()).filter( - (id: string) => id.includes('virtual'), - ) - expect(virtualId).toEqual(['\x00virtual:file', '/@id/__x00__virtual:file']) - }) - test('handle virtual module updates', async () => { await page.goto(viteTestUrl) const el = await page.$('.virtual') diff --git a/playground/hmr/hmr.ts b/playground/hmr/hmr.ts index 7a31477d52f556..9748fdd1e8bc11 100644 --- a/playground/hmr/hmr.ts +++ b/playground/hmr/hmr.ts @@ -42,13 +42,6 @@ if (import.meta.hot) { handleDep('multi deps', foo, nestedFoo) }) - import.meta.hot.accept( - ['virtual:file', '/@id/__x00__virtual:file'], - ([rawVirtualPath, acceptedVirtualPath]) => { - text('.virtual', acceptedVirtualPath.virtual) - }, - ) - import.meta.hot.dispose(() => { console.log(`foo was:`, foo) })