createRoutesList() — astro Function Reference
Architecture documentation for the createRoutesList() function in create.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD 980f5a1b_85ee_0217_7a04_888abfb8f70f["createRoutesList()"] a7eed989_9f2b_5163_ecdf_85920a8b973f["create.ts"] 980f5a1b_85ee_0217_7a04_888abfb8f70f -->|defined in| a7eed989_9f2b_5163_ecdf_85920a8b973f 769abfe3_0dff_1eda_a9cd_919cc8ae8621["createFileBasedRoutes()"] 980f5a1b_85ee_0217_7a04_888abfb8f70f -->|calls| 769abfe3_0dff_1eda_a9cd_919cc8ae8621 45eeb620_478e_aa03_8346_e477fdcca943["createInjectedRoutes()"] 980f5a1b_85ee_0217_7a04_888abfb8f70f -->|calls| 45eeb620_478e_aa03_8346_e477fdcca943 e28e398f_3a64_8e35_e7de_2406040de612["createRedirectRoutes()"] 980f5a1b_85ee_0217_7a04_888abfb8f70f -->|calls| e28e398f_3a64_8e35_e7de_2406040de612 6d3eab18_f149_cd0f_b9bf_e3324684390e["detectRouteCollision()"] 980f5a1b_85ee_0217_7a04_888abfb8f70f -->|calls| 6d3eab18_f149_cd0f_b9bf_e3324684390e 1238e67c_a57d_fa2d_67fb_033b7f31b2ba["getParts()"] 980f5a1b_85ee_0217_7a04_888abfb8f70f -->|calls| 1238e67c_a57d_fa2d_67fb_033b7f31b2ba 90f88b4e_4baf_d6d3_95c6_44a6828c3fbc["replaceOrKeep()"] 980f5a1b_85ee_0217_7a04_888abfb8f70f -->|calls| 90f88b4e_4baf_d6d3_95c6_44a6828c3fbc style 980f5a1b_85ee_0217_7a04_888abfb8f70f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/astro/src/core/routing/manifest/create.ts lines 485–782
export async function createRoutesList(
params: CreateRouteManifestParams,
logger: Logger,
{
dev = false,
skipBuildOutputAssignment = false,
}: {
dev?: boolean;
/**
* When `true`, the assignment of `settings.buildOutput` is skipped.
* Usually, that's needed when this function has already been called.
*/
skipBuildOutputAssignment?: boolean;
} = {},
): Promise<RoutesList> {
const { settings } = params;
const { config } = settings;
// Create a map of all routes so redirects can refer to any route
const routeMap = new Map();
const fileBasedRoutes = createFileBasedRoutes(params, logger);
for (const route of fileBasedRoutes) {
routeMap.set(route.route, route);
}
const injectedRoutes = createInjectedRoutes(params);
for (const route of injectedRoutes) {
routeMap.set(route.route, route);
}
const redirectRoutes = createRedirectRoutes(params, routeMap);
// we remove the file based routes that were deemed redirects
const filteredFiledBasedRoutes = fileBasedRoutes.filter((fileBasedRoute) => {
const isRedirect = redirectRoutes.findIndex((rd) => rd.route === fileBasedRoute.route);
return isRedirect < 0;
});
const routes: RouteData[] = [
...[...filteredFiledBasedRoutes, ...injectedRoutes, ...redirectRoutes].sort(routeComparator),
];
if (skipBuildOutputAssignment !== true) {
settings.buildOutput = getPrerenderDefault(config) ? 'static' : 'server';
}
// Check the prerender option for each route
const limit = pLimit(10);
let promises = [];
for (const route of routes) {
promises.push(
limit(async () => {
if (route.type !== 'page' && route.type !== 'endpoint' && route.type !== 'redirect') return;
// External redirects aren't taken into account
if (route.type === 'redirect' && !route.redirectRoute) return;
const localFs = params.fsMod ?? nodeFs;
const content = await localFs.promises.readFile(
fileURLToPath(
new URL(
// The destination redirect might be a prerendered
route.type === 'redirect' && route.redirectRoute
? route.redirectRoute.component
: route.component,
settings.config.root,
),
),
'utf-8',
);
await getRoutePrerenderOption(content, route, settings, logger);
}),
);
}
await Promise.all(promises);
// Report route collisions
for (const [index, higherRoute] of routes.entries()) {
for (const lowerRoute of routes.slice(index + 1)) {
detectRouteCollision(higherRoute, lowerRoute, config, logger);
}
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does createRoutesList() do?
createRoutesList() is a function in the astro codebase, defined in packages/astro/src/core/routing/manifest/create.ts.
Where is createRoutesList() defined?
createRoutesList() is defined in packages/astro/src/core/routing/manifest/create.ts at line 485.
What does createRoutesList() call?
createRoutesList() calls 6 function(s): createFileBasedRoutes, createInjectedRoutes, createRedirectRoutes, detectRouteCollision, getParts, replaceOrKeep.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free