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

Function prerender

packages/start-plugin-core/src/prerender.ts:17–261  ·  view source on GitHub ↗
({
  startConfig,
  handler,
}: {
  startConfig: TanStackStartOutputConfig
  handler: PrerenderHandler
})

Source from the content-addressed store, hash-verified

15}
16
17export async function prerender({
18 startConfig,
19 handler,
20}: {
21 startConfig: TanStackStartOutputConfig
22 handler: PrerenderHandler
23}) {
24 const logger = createLogger('prerender')
25 logger.info('Prerendering pages...')
26
27 if (startConfig.prerender?.enabled) {
28 let pages = startConfig.pages.length ? startConfig.pages : [{ path: '/' }]
29
30 if (startConfig.prerender.autoStaticPathsDiscovery ?? true) {
31 const pagesMap = new Map(pages.map((item) => [item.path, item]))
32 const discoveredPages = globalThis.TSS_PRERENDABLE_PATHS || []
33
34 for (const page of discoveredPages) {
35 if (!pagesMap.has(page.path)) {
36 pagesMap.set(page.path, page)
37 }
38 }
39
40 pages = Array.from(pagesMap.values())
41 }
42
43 startConfig.pages = pages
44 }
45
46 const routerBasePath = joinURL('/', startConfig.router.basepath ?? '')
47 const routerBaseUrl = new URL(routerBasePath, 'http://localhost')
48
49 startConfig.pages = validateAndNormalizePrerenderPages(
50 startConfig.pages,
51 routerBaseUrl,
52 )
53
54 try {
55 const pages = await prerenderPages({
56 outputDir: handler.getClientOutputDirectory(),
57 })
58
59 logger.info(`Prerendered ${pages.length} pages:`)
60 pages.forEach((page) => {
61 logger.info(`- ${page}`)
62 })
63 } catch (error) {
64 logger.error(error)
65 throw error
66 } finally {
67 await handler.close?.()
68 }
69
70 function extractLinks(html: string): Array<string> {
71 const linkRegex = /<a[^>]+href=["']([^"']+)["'][^>]*>/g
72 const links: Array<string> = []
73 let match: RegExpExecArray | null
74

Callers 3

prerenderWithViteFunction · 0.90
prerenderFunction · 0.90

Calls 9

createLoggerFunction · 0.90
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