Files
ProxMenux/web/app/sitemap.ts

43 lines
1.2 KiB
TypeScript
Raw Permalink Normal View History

import type { MetadataRoute } from "next"
import fs from "fs"
import path from "path"
export const dynamic = "force-static"
const SITE_URL = "https://proxmenux.com"
function walkDocsRoutes(dir: string, baseRoute: string): string[] {
const routes: string[] = []
if (!fs.existsSync(dir)) return routes
const entries = fs.readdirSync(dir, { withFileTypes: true })
for (const entry of entries) {
const full = path.join(dir, entry.name)
if (entry.isDirectory()) {
routes.push(...walkDocsRoutes(full, `${baseRoute}/${entry.name}`))
} else if (entry.name === "page.tsx" || entry.name === "page.mdx") {
routes.push(baseRoute || "/")
}
}
return routes
}
export default function sitemap(): MetadataRoute.Sitemap {
const appDir = path.join(process.cwd(), "app")
const discovered = walkDocsRoutes(appDir, "")
.filter((r) => !r.includes("/api/"))
.map((r) => (r === "" ? "/" : r))
const unique = Array.from(new Set(discovered))
const now = new Date()
return unique.map((route) => ({
url: `${SITE_URL}${route}`,
lastModified: now,
changeFrequency: route.startsWith("/docs") ? "weekly" : "monthly",
priority: route === "/" ? 1.0 : route.startsWith("/docs") ? 0.8 : 0.6,
}))
}