in packages/route-manifest/src/index.ts [58:119]
export function generateRouteManifest(
rootDir: string,
ignoreFiles: string[] = [],
defineExtraRoutesQueue?: DefineExtraRoutes[],
routeConfig?: RouteItem[],
) {
const srcDir = path.join(rootDir, 'src');
const routeManifest: RouteManifest = {};
// 2. find routes in `src/pages` directory
if (fs.existsSync(path.resolve(srcDir, 'pages'))) {
const conventionalRoutes = defineConventionalRoutes(
rootDir,
{
routeManifest,
nestedRouteManifest: formatNestedRouteManifest(routeManifest),
},
ignoreFiles,
);
for (const key of Object.keys(conventionalRoutes)) {
const route = conventionalRoutes[key];
routeManifest[route.id] = {
...route,
parentId: route.parentId || undefined,
};
}
}
// 3. add extra routes from user config
if (Array.isArray(defineExtraRoutesQueue)) {
defineExtraRoutesQueue.forEach((defineExtraRoutes) => {
if (defineExtraRoutes) {
const extraRoutes = defineRoutes(
rootDir,
defineExtraRoutes,
{
routeManifest,
nestedRouteManifest: formatNestedRouteManifest(routeManifest),
},
);
for (const key of Object.keys(extraRoutes)) {
const route = extraRoutes[key];
routeManifest[route.id] = {
...route,
parentId: route.parentId || undefined,
};
}
}
});
}
// Add routes by routes config.
if (routeConfig) {
routeConfig.forEach((routeItem) => {
const routes = parseRoute(routeItem);
routes.forEach((route) => {
routeManifest[route.id] = route;
});
});
}
return routeManifest;
}