MCPcopy Create free account
hub / github.com/TanStack/router / prerenderWithVite

Function prerenderWithVite

packages/start-plugin-core/src/vite/prerender.ts:7–54  ·  view source on GitHub ↗
({
  startConfig,
  builder,
}: {
  startConfig: TanStackStartOutputConfig
  builder: ViteBuilder
})

Source from the content-addressed store, hash-verified

5import type { PreviewServer, ResolvedConfig, ViteBuilder } from 'vite'
6
7export async function prerenderWithVite({
8 startConfig,
9 builder,
10}: {
11 startConfig: TanStackStartOutputConfig
12 builder: ViteBuilder
13}) {
14 const serverEnv = builder.environments[VITE_ENVIRONMENT_NAMES.server]
15
16 if (!serverEnv) {
17 throw new Error(
18 `Vite's "${VITE_ENVIRONMENT_NAMES.server}" environment not found`,
19 )
20 }
21
22 const clientEnv = builder.environments[VITE_ENVIRONMENT_NAMES.client]
23 if (!clientEnv) {
24 throw new Error(
25 `Vite's "${VITE_ENVIRONMENT_NAMES.client}" environment not found`,
26 )
27 }
28
29 const outputDir = clientEnv.config.build.outDir
30
31 process.env.TSS_PRERENDERING = 'true'
32 process.env.TSS_CLIENT_OUTPUT_DIR = outputDir
33
34 const previewServer = await startPreviewServer(serverEnv.config)
35 const baseUrl = getResolvedUrl(previewServer)
36
37 const handler: PrerenderHandler = {
38 getClientOutputDirectory() {
39 return outputDir
40 },
41 request(path, options) {
42 const url = new URL(path, baseUrl)
43 return fetch(new Request(url, options))
44 },
45 close() {
46 return previewServer.close()
47 },
48 }
49
50 return prerender({
51 startConfig,
52 handler,
53 })
54}
55
56async function startPreviewServer(
57 viteConfig: ResolvedConfig,

Callers 1

prerenderFunction · 0.90

Calls 3

prerenderFunction · 0.90
startPreviewServerFunction · 0.85
getResolvedUrlFunction · 0.85

Tested by

no test coverage detected