Files
public-blog/app/sitemap.ts
2026-07-06 20:50:16 -05:00

21 lines
715 B
TypeScript

import type { MetadataRoute } from 'next'
import { getAllTags, getPosts } from '@/lib/posts'
import { tagToSlug } from '@/lib/tags'
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://localhost:3000'
export const dynamic = 'force-static'
const absoluteUrl = (pathname: string): string => new URL(pathname, siteUrl).toString()
const [posts, tags] = await Promise.all([getPosts(), getAllTags()])
export default function sitemap(): MetadataRoute.Sitemap {
return [
{ url: absoluteUrl('/') },
{ url: absoluteUrl('/blog/') },
...posts.map((post) => ({ url: absoluteUrl(`/blog/${post.slug}/`) })),
...tags.map((tag) => ({ url: absoluteUrl(`/blog/tags/${tagToSlug(tag.label)}/`) })),
]
}