UNPKG

iles

Version:

Vite & Vue powered static site generator with partial hydration

38 lines (35 loc) 1.28 kB
import { warnMark, withSpinner } from "./chunk-PUZAE3UL.js"; // src/node/build/sitemap.ts import { promises as fs } from "fs"; import { join } from "pathe"; async function createSitemap(config, routesToRender) { const { outDir, base, siteUrl, ssg: { sitemap } } = config; if (!sitemap) return; if (!siteUrl) return console.warn(warnMark, "Skipping sitemap. Configure `siteUrl` to enable sitemap generation."); withSpinner("rendering sitemap", async () => { const sitemap2 = sitemapFor(`${siteUrl}${base}`, routesToRender); await fs.mkdir(outDir, { recursive: true }); await fs.writeFile(join(outDir, "sitemap.xml"), sitemap2, "utf8"); }); } function sitemapFor(siteUrl, routesToRender) { const pageUrls = /* @__PURE__ */ new Set(); for (const route of routesToRender) { if (!route.outputFilename.endsWith(".html")) continue; if (route.path === "/404") continue; pageUrls.add(route.path); } const sortedUrls = Array.from(pageUrls).sort((a, b) => a.localeCompare(b, "en", { numeric: true })); return `<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> ${sortedUrls.map((url) => ` <url><loc>${siteUrl + url.slice(1)}</loc></url> `).join("")} </urlset> `; } export { createSitemap };