/ scripts / writeSitemap.mjs
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();