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`) console.log(attributes) 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 } }