MCPcopy
hub / github.com/TanStack/router / prerender

Function prerender

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

Source from the content-addressed store, hash-verified

9import type { Page, TanStackStartOutputConfig } from './schema'
10
11export async function prerender({
12 startConfig,
13 builder,
14}: {
15 startConfig: TanStackStartOutputConfig
16 builder: ViteBuilder
17}) {
18 const logger = createLogger('prerender')
19 logger.info('Prerendering pages...')
20
21 // If prerender is enabled
22 if (startConfig.prerender?.enabled) {
23 // default to root page if no pages are defined
24 let pages = startConfig.pages.length ? startConfig.pages : [{ path: '/' }]
25
26 if (startConfig.prerender.autoStaticPathsDiscovery ?? true) {
27 // merge discovered static pages with user-defined pages
28 const pagesMap = new Map(pages.map((item) => [item.path, item]))
29 const discoveredPages = globalThis.TSS_PRERENDABLE_PATHS || []
30
31 for (const page of discoveredPages) {
32 if (!pagesMap.has(page.path)) {
33 pagesMap.set(page.path, page)
34 }
35 }
36
37 pages = Array.from(pagesMap.values())
38 }
39
40 startConfig.pages = pages
41 }
42
43 const routerBasePath = joinURL('/', startConfig.router.basepath ?? '')
44 const routerBaseUrl = new URL(routerBasePath, 'http://localhost')
45
46 // Enforce that prerender page paths are relative/path-based (no protocol/host)
47 startConfig.pages = validateAndNormalizePrerenderPages(
48 startConfig.pages,
49 routerBaseUrl,
50 )
51
52 const serverEnv = builder.environments[VITE_ENVIRONMENT_NAMES.server]
53
54 if (!serverEnv) {
55 throw new Error(
56 `Vite's "${VITE_ENVIRONMENT_NAMES.server}" environment not found`,
57 )
58 }
59
60 const clientEnv = builder.environments[VITE_ENVIRONMENT_NAMES.client]
61 if (!clientEnv) {
62 throw new Error(
63 `Vite's "${VITE_ENVIRONMENT_NAMES.client}" environment not found`,
64 )
65 }
66
67 const outputDir = clientEnv.config.build.outDir
68

Callers 2

postServerBuildFunction · 0.90

Calls 11

createLoggerFunction · 0.90
startPreviewServerFunction · 0.85
getResolvedUrlFunction · 0.85
prerenderPagesFunction · 0.85
infoMethod · 0.65
setMethod · 0.65
valuesMethod · 0.65
errorMethod · 0.65
closeMethod · 0.65
hasMethod · 0.45

Tested by

no test coverage detected