hikaru-generator-sitemap
Version:
Sitemap generator plugin for Hikaru.
28 lines (24 loc) • 913 B
JavaScript
import * as fs from "node:fs/promises";
import * as path from "node:path";
const pluginDir = path.dirname(new URL(import.meta.url).pathname);
const generateSitemap = async (hikaru) => {
if (!hikaru.site["siteConfig"]["sitemap"]["enable"]) {
return;
}
const {File} = hikaru.types;
const filepath = path.join(pluginDir, "sitemap.njk");
const content = await fs.readFile(filepath, "utf8");
const fn = await hikaru.compiler.compile(filepath, content);
hikaru.decorator.register("sitemap", fn);
hikaru.helper.register("sitemap context", (site, file) => {
return {"dirname": pluginDir, "pathSep": path.sep};
}, "sitemap");
hikaru.generator.register("sitemap", (site) => {
return new File({
"docDir": site["siteConfig"]["docDir"],
"docPath": site["siteConfig"]["sitemap"]["path"] || "sitemap.xml",
"layout": "sitemap"
});
});
};
export default generateSitemap;