aaronjy-me/next-sitemap.config.cjs
2025-05-02 23:10:34 +01:00

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
}
}