rsnext/examples/blog/scripts/gen-rss.js
2021-03-21 19:44:59 -05:00

38 lines
1 KiB
JavaScript

const { promises: fs } = require('fs')
const path = require('path')
const RSS = require('rss')
const matter = require('gray-matter')
async function generate() {
const feed = new RSS({
title: 'Your Name',
site_url: 'https://yoursite.com',
feed_url: 'https://yoursite.com/feed.xml'
})
const posts = await fs.readdir(path.join(__dirname, '..', 'pages', 'posts'))
await Promise.all(
posts.map(async (name) => {
if (name.startsWith('index.')) return
const content = await fs.readFile(
path.join(__dirname, '..', 'pages', 'posts', name)
)
const frontmatter = matter(content)
feed.item({
title: frontmatter.data.title,
url: '/posts/' + name.replace(/\.mdx?/, ''),
date: frontmatter.data.date,
description: frontmatter.data.description,
categories: frontmatter.data.tag.split(', '),
author: frontmatter.data.author
})
})
)
await fs.writeFile('./public/feed.xml', feed.xml({ indent: true }))
}
generate()