From 4c0c3770b6ac9e25072e7bfcd6856a2133a8c669 Mon Sep 17 00:00:00 2001 From: khalilcodes Date: Wed, 1 Jun 2022 18:57:58 +0300 Subject: [PATCH] [site/seo]: create script file to generate sitemap --- site/.gitignore | 1 + site/scripts/generate-sitemap.mjs | 45 +++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 site/scripts/generate-sitemap.mjs diff --git a/site/.gitignore b/site/.gitignore index 1ebcbd8..b980d10 100644 --- a/site/.gitignore +++ b/site/.gitignore @@ -14,6 +14,7 @@ # production /build +public/sitemap.xml # misc .DS_Store diff --git a/site/scripts/generate-sitemap.mjs b/site/scripts/generate-sitemap.mjs new file mode 100644 index 0000000..33338b1 --- /dev/null +++ b/site/scripts/generate-sitemap.mjs @@ -0,0 +1,45 @@ +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 = ` + + + ${pages + .map((page) => { + const path = page + .replace("pages", "") + .replace("content", "") + .replace(/.jsx*/, "") + .replace(/.mdx*/, ""); + const route = path === "/index" ? "" : path; + return ` + + ${`https://web3.lifeiteself.us${route}`} + + `; + }) + .join("")} + + `; + + const formatted = prettier.format(sitemap, { + ...prettierConfig, + parser: "html", + }); + + // eslint-disable-next-line no-sync + writeFileSync("public/sitemap.xml", formatted); +} + +generate();