This commit is contained in:
matthieu42morin 2024-03-31 05:33:43 +02:00
parent efaae142f1
commit e9ab134ebd
1 changed files with 53 additions and 0 deletions

View File

@ -0,0 +1,53 @@
import { removeTrailingSlash } from '$lib/utils/formatParse'
import { listPosts } from '$content/blog';
// prettier-ignore
const sitemap = (pages: string[]) => `<?xml version="1.0" encoding="UTF-8" ?>
<urlset
xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="https://www.google.com/schemas/sitemap-news/0.9"
xmlns:xhtml="https://www.w3.org/1999/xhtml"
xmlns:mobile="https://www.google.com/schemas/sitemap-mobile/1.0"
xmlns:image="https://www.google.com/schemas/sitemap-image/1.1"
xmlns:video="https://www.google.com/schemas/sitemap-video/1.1"
>
${pages.map((page) => `<url><loc>${removeTrailingSlash(page)}</loc></url>`).join('')}
</urlset>
`;
export const GET = async () => {
const staticPages = Object.keys(
// For other static pages. Except content pages - changelogs, guides, blog posts, guides etc.
import.meta.glob('/src/routes/**/!(_)*.{svelte,md,svx}')
)
.filter((page) => {
const filters = [
'/src/routes/index.svelte',
'404',
'slug]',
'title]',
'+error',
'+layout'
];
return !filters.find((filter) => page.includes(filter));
})
.map((page) => {
return page
.replace('/src/routes', 'https://mattmor.in')
.replace('/index.md', '/')
.replace('.md', '/')
.replace('/index.svelte', '/')
.replace('.svelte', '/')
.replace('/+page', '');
});
const Posts = listPosts().map((post) => `https://www.mattmor.in/blog/${post.slug}`);
const renderedSitemap = sitemap([...staticPages, ...Posts]);
return new Response(renderedSitemap, {
headers: {
'Cache-Control': 'max-age=0, s-maxage=3600',
'Content-Type': 'application/xml'
}
});
};