I want an RSS feed and Sitemap that aren’t a pain to make.
RSS is not easy. XML is a finicky specification that needs to be encoded and formatted in a specific way to be valid. Often, its also difficult to gather up all of the content on a site into one concise rss endpoint.
Sapper ships with the ability to support json apis within the app by creating a
index.json.js file within any
To create a route with the
.xml extension, create an
rss.xml.js file inside of the route directory. Inside of this route, we can use
node-fetch against our own json api, then map through and create straightforward XML.
A similar approach can be taken to generate a sitemap, but using Node’s
readDirSync function instead of
fetch to look through the project file structure and construct an XML tree. Because of the
post-name/index.md organization pattern I had to make some modifications, but this post by Zechtyounes helped get 90% of the way there.
A NOTE: if there are not
<a> tags with their
href pointing to these pages, they won’t be properly crawled when
sapper export is run. The command in the
package.json file can be modified to run with the
--entry flag to include them.