UNPKG

astro

Version:

Astro is a modern site builder with web best practices, performance, and DX front-of-mind.

33 lines (32 loc) • 1.13 kB
import { runHookRouteSetup } from "../../integrations/hooks.js"; import { getPrerenderDefault } from "../../prerender/utils.js"; const PRERENDER_REGEX = /^\s*export\s+const\s+prerender\s*=\s*(true|false);?/m; /** * Parses the `export const prerender = true|false` declaration from a route's * source content. Returns `true`, `false`, or `undefined` if not present. */ export function parsePrerenderExport(content) { const match = PRERENDER_REGEX.exec(content); if (!match) return undefined; return match[1] === "true"; } export async function getRoutePrerenderOption(content, route, settings, logger) { // Check if the route is pre-rendered or not const match = PRERENDER_REGEX.exec(content); if (match) { route.prerender = match[1] === "true"; if (route.redirectRoute) { route.redirectRoute.prerender = match[1] === "true"; } } await runHookRouteSetup({ route, settings, logger }); // If not explicitly set, default to the global setting if (typeof route.prerender === undefined) { route.prerender = getPrerenderDefault(settings.config); } if (!route.prerender) settings.buildOutput = "server"; }