export function generateRouteManifest()

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;
}