46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
import { writeFileSync } from "fs";
|
|
import { globby } from "globby";
|
|
import prettier from "prettier";
|
|
|
|
async function generate() {
|
|
const prettierConfig = await prettier.resolveConfig("./.prettierrc.js");
|
|
const pages = await globby([
|
|
"pages/!(\\[**])*.js*",
|
|
"content/**/*.md*",
|
|
"!pages/_*.js*",
|
|
"!pages/api",
|
|
"!pages/404.js*",
|
|
]);
|
|
|
|
const sitemap = `
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
${pages
|
|
.map((page) => {
|
|
const path = page
|
|
.replace("pages", "")
|
|
.replace("content", "")
|
|
.replace(/.jsx*/, "")
|
|
.replace(/.mdx*/, "");
|
|
const route = path === "/index" ? "" : path;
|
|
return `
|
|
<url>
|
|
<loc>${`https://web3.lifeiteself.us${route}`}</loc>
|
|
</url>
|
|
`;
|
|
})
|
|
.join("")}
|
|
</urlset>
|
|
`;
|
|
|
|
const formatted = prettier.format(sitemap, {
|
|
...prettierConfig,
|
|
parser: "html",
|
|
});
|
|
|
|
// eslint-disable-next-line no-sync
|
|
writeFileSync("public/sitemap.xml", formatted);
|
|
}
|
|
|
|
generate();
|