pluginPages() — astro Function Reference
Architecture documentation for the pluginPages() function in pages.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD c316a851_4c8c_a92e_d38e_5889e65c63ae["pluginPages()"] 6e737d15_0195_e062_7c54_997ea919572e["pages.ts"] c316a851_4c8c_a92e_d38e_5889e65c63ae -->|defined in| 6e737d15_0195_e062_7c54_997ea919572e b2f15e7c_85c3_2f88_a7bc_12f99918b35e["getRoutesForEnvironment()"] c316a851_4c8c_a92e_d38e_5889e65c63ae -->|calls| b2f15e7c_85c3_2f88_a7bc_12f99918b35e style c316a851_4c8c_a92e_d38e_5889e65c63ae fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/astro/src/vite-plugin-pages/pages.ts lines 34–103
export function pluginPages({ routesList }: PagesPluginOptions): VitePlugin {
return {
name: '@astro/plugin-pages',
enforce: 'post',
applyToEnvironment(environment) {
return (
environment.name === ASTRO_VITE_ENVIRONMENT_NAMES.ssr ||
environment.name === ASTRO_VITE_ENVIRONMENT_NAMES.prerender
);
},
resolveId: {
filter: {
id: new RegExp(`^${VIRTUAL_PAGES_MODULE_ID}$`),
},
handler() {
return VIRTUAL_PAGES_RESOLVED_MODULE_ID;
},
},
load: {
filter: {
id: new RegExp(`^${VIRTUAL_PAGES_RESOLVED_MODULE_ID}$`),
},
async handler() {
const imports: string[] = [];
const pageMap: string[] = [];
let i = 0;
// Filter routes based on the build environment to reduce memory usage.
// Each environment only builds the pages it needs:
// - SSR environment: builds only on-demand rendered pages (prerender: false)
// - Prerender environment: builds only static pages (prerender: true)
// - Other environments (e.g. client): get all routes
const envName = this.environment.name;
const isSSR = envName === ASTRO_VITE_ENVIRONMENT_NAMES.ssr;
const isPrerender = envName === ASTRO_VITE_ENVIRONMENT_NAMES.prerender;
const routes =
isSSR || isPrerender
? getRoutesForEnvironment(routesList.routes, isPrerender)
: new Set(routesList.routes);
for (const route of routes) {
if (routeIsRedirect(route)) {
continue;
}
// Skip default components (404, server islands, etc.)
if (DEFAULT_COMPONENTS.some((component) => route.component === component)) {
continue;
}
const virtualModuleName = getVirtualModulePageName(
VIRTUAL_PAGE_MODULE_ID,
route.component,
);
const module = await this.resolve(virtualModuleName);
if (module) {
const variable = `_page${i}`;
// use the non-resolved ID to resolve correctly the virtual module
imports.push(`const ${variable} = () => import("${virtualModuleName}");`);
pageMap.push(`[${JSON.stringify(route.component)}, ${variable}]`);
i++;
}
}
const pageMapCode = `const pageMap = new Map([\n ${pageMap.join(',\n ')}\n]);\n\nexport { pageMap };`;
return { code: [...imports, pageMapCode].join('\n') };
},
},
};
}
Domain
Subdomains
Source
Frequently Asked Questions
What does pluginPages() do?
pluginPages() is a function in the astro codebase, defined in packages/astro/src/vite-plugin-pages/pages.ts.
Where is pluginPages() defined?
pluginPages() is defined in packages/astro/src/vite-plugin-pages/pages.ts at line 34.
What does pluginPages() call?
pluginPages() calls 1 function(s): getRoutesForEnvironment.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free