writeSitemap.mjs
1 import fs from "fs/promises"; 2 import path from "path"; 3 4 const baseURL = "https://blog.nyaw.xyz"; 5 6 const readData = async () => { 7 const filePath = path.resolve("src/routes/data.ts"); 8 const data = (await fs.readFile(filePath, "utf-8")).slice(15, -10); 9 return JSON.parse(data); 10 }; 11 12 const generateSitemap = (data) => { 13 const urls = data 14 .filter((item) => !item.draft) 15 .map((item) => `${baseURL}/${item.path}`) 16 .join("\n"); 17 18 return `<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n${urls 19 .split("\n") 20 .map((url) => ` <url>\n <loc>${url}</loc>\n </url>`) 21 .join("\n")}\n</urlset>`; 22 }; 23 24 const generateAndSaveSitemap = async () => { 25 try { 26 const data = await readData(); 27 const sitemap = generateSitemap(data); 28 await fs.writeFile("public/sitemap.xml", sitemap); 29 console.log("Sitemap generated and saved as sitemap.xml"); 30 } catch (error) { 31 console.error("Error generating sitemap:", error); 32 } 33 }; 34 35 generateAndSaveSitemap();