1
0
mirror of https://github.com/kamranahmedse/developer-roadmap.git synced 2025-01-18 06:38:34 +01:00
developer-roadmap/sitemap.mjs

56 lines
1.3 KiB
JavaScript
Raw Normal View History

2023-01-04 18:08:47 +04:00
import path from 'node:path';
import fs from 'node:fs/promises';
async function getRoadmapIds() {
return fs.readdir(path.join(process.cwd(), 'src/roadmaps'));
}
export function shouldIndexPage(page) {
return ![
'https://roadmap.sh/404/',
'https://roadmap.sh/terms/',
'https://roadmap.sh/privacy/',
2023-01-04 21:32:30 +04:00
'https://roadmap.sh/pdfs/',
2023-01-04 18:08:47 +04:00
].includes(page);
}
export async function serializeSitemap(item) {
const highPriorityPages = [
'https://roadmap.sh/',
'https://roadmap.sh/about/',
'https://roadmap.sh/roadmaps/',
'https://roadmap.sh/guides/',
'https://roadmap.sh/videos/',
...(await getRoadmapIds()).map((id) => `https://roadmap.sh/${id}/`),
];
// Roadmaps and other high priority pages
for (let pageUrl of highPriorityPages) {
if (item.url === pageUrl) {
return {
...item,
// @ts-ignore
changefreq: 'monthly',
priority: 1,
lastmod: new Date().toISOString(),
};
}
}
// Guide and video pages
if (
item.url.startsWith('https://roadmap.sh/guides/') ||
item.url.startsWith('https://roadmap.sh/videos/')
) {
return {
...item,
// @ts-ignore
changefreq: 'monthly',
priority: 0.9,
lastmod: new Date().toISOString(),
};
}
return undefined;
}