69 lines
1.5 KiB
JavaScript
69 lines
1.5 KiB
JavaScript
const fs = require("fs");
|
|
const fm = require("front-matter");
|
|
|
|
/** @type {import('next-sitemap').IConfig} */
|
|
module.exports = {
|
|
siteUrl: process.env.SITE_URL || "https://www.aaronjy.me",
|
|
changefreq: "weekly",
|
|
generateRobotsTxt: true,
|
|
autoLastmod: false,
|
|
generateIndexSitemap: false,
|
|
robotsTxtOptions: {
|
|
policies: [
|
|
{
|
|
userAgent: "*",
|
|
allow: "/",
|
|
},
|
|
],
|
|
},
|
|
// transform: async (config, path) => {
|
|
// const metadata = {
|
|
// loc: path
|
|
// }
|
|
|
|
// if (isHomepage(path)) {
|
|
// metadata.priority = 1
|
|
// } else if (isBasePage(path)) {
|
|
// metadata.priority = 0.8
|
|
// } else {
|
|
// if (isArticle(path)) {
|
|
// metadata.priority = 0.6
|
|
// const attributes = getArticleAttibutes(`content${path}.md`)
|
|
// if (!attributes) { return null }
|
|
|
|
// metadata.lastmod = attributes.moddate ?? attributes.pubdate ?? null
|
|
|
|
// console.log('Calculated sitemap dates for article', path)
|
|
// }
|
|
// }
|
|
|
|
// return metadata
|
|
// }
|
|
};
|
|
|
|
function isHomepage(path) {
|
|
return path === "/";
|
|
}
|
|
|
|
function isBasePage(path) {
|
|
return path.split("/").length === 2;
|
|
}
|
|
|
|
function isArticle(path) {
|
|
return path.startsWith("/writing/");
|
|
}
|
|
|
|
function getArticleAttibutes(path) {
|
|
const fileContents = fs.readFileSync(path, {
|
|
encoding: "utf-8",
|
|
});
|
|
|
|
// @ts-ignore
|
|
const { attributes } = fm(fileContents);
|
|
|
|
return {
|
|
...attributes,
|
|
pubdate: attributes.pubdate?.toUTCString() ?? null,
|
|
moddate: attributes.moddate?.toUTCString() ?? null,
|
|
};
|
|
}
|