mirror of
https://github.com/altstackHQ/altstack-data.git
synced 2026-04-18 14:53:19 +02:00
Initialize public data and docs repository
This commit is contained in:
60
docs/app/sitemap.ts
Normal file
60
docs/app/sitemap.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import { MetadataRoute } from 'next'
|
||||
import path from 'path'
|
||||
import fs from 'fs'
|
||||
|
||||
const BASE_URL = 'https://docs.thealtstack.com'
|
||||
|
||||
/**
|
||||
* Dynamically generates the sitemap for the docs site by scanning
|
||||
* the app directory for all page.mdx files. This replaces the old
|
||||
* static public/sitemap.xml that would drift out of sync.
|
||||
*/
|
||||
export default function sitemap(): MetadataRoute.Sitemap {
|
||||
const appDir = path.join(process.cwd(), 'app')
|
||||
const pages: string[] = []
|
||||
|
||||
// Recursively find all page.mdx files
|
||||
function scan(dir: string, prefix: string) {
|
||||
const entries = fs.readdirSync(dir, { withFileTypes: true })
|
||||
for (const entry of entries) {
|
||||
// Skip hidden dirs, node_modules, test dirs
|
||||
if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'test') continue
|
||||
|
||||
if (entry.isDirectory()) {
|
||||
scan(path.join(dir, entry.name), `${prefix}/${entry.name}`)
|
||||
} else if (entry.name === 'page.mdx') {
|
||||
// Root page.mdx → '/', nested → '/concepts/docker-basics'
|
||||
pages.push(prefix || '/')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scan(appDir, '')
|
||||
|
||||
// Priority map for top-level sections
|
||||
const priorityMap: Record<string, number> = {
|
||||
'/': 1.0,
|
||||
'/quick-start': 0.9,
|
||||
'/deploy': 0.8,
|
||||
'/concepts': 0.8,
|
||||
'/stacks': 0.7,
|
||||
}
|
||||
|
||||
return pages.map(pagePath => {
|
||||
// Determine priority based on section
|
||||
const section = '/' + (pagePath.split('/')[1] || '')
|
||||
const priority = priorityMap[section] || priorityMap[pagePath] || 0.6
|
||||
|
||||
// Determine change frequency
|
||||
let changeFrequency: 'daily' | 'weekly' | 'monthly' | 'yearly' = 'monthly'
|
||||
if (pagePath === '/') changeFrequency = 'weekly'
|
||||
if (pagePath.startsWith('/deploy')) changeFrequency = 'weekly'
|
||||
|
||||
return {
|
||||
url: `${BASE_URL}${pagePath}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency,
|
||||
priority,
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user