diff --git a/src/vite/index.ts b/src/vite/index.ts index 4279b50..3bc19fa 100644 --- a/src/vite/index.ts +++ b/src/vite/index.ts @@ -319,12 +319,12 @@ export function fileRoutes(options: FileRoutesOptions = {}): PluginOption[] { // plus the `src` lazy refs already expose. if (!codeSplitting) { return { - src: relative(root, buildId), + src: normalizePath(relative(root, buildId)), require: `_$() => (${js.addNamespaceImport(buildId)})$_` }; } return { - src: relative(root, buildId), + src: normalizePath(relative(root, buildId)), build: isBuild ? `_$() => import('${buildId}')$_` : undefined, import: `_$() => import('${buildId}')$_` }; diff --git a/test/vite.spec.ts b/test/vite.spec.ts index d0af478..299a704 100644 --- a/test/vite.spec.ts +++ b/test/vite.spec.ts @@ -85,6 +85,20 @@ describe("fileRoutes vite plugin", () => { expect(code.match(/pick=default&pick=\$css&lang\.tsx'\)/g)?.length).toBe(2); }); + it("serializes lazy-ref src values with forward slashes", async () => { + const directory = createRouteTree({ + "index.tsx": "export default () =>

Home

;" + }); + + const split = await loadVirtualModule(directory); + const eager = await loadWith(createPlugin(directory, { codeSplitting: false }), directory); + + expect(split).toContain('"src"'); + expect(eager).toContain('"src"'); + expect(split).not.toContain("\\"); + expect(eager).not.toContain("\\"); + }); + it("resolves only the virtual module id", async () => { const [plugin] = fileRoutes() as any[]; expect(moduleId).toBe("virtual:file-routes");