gatsby-plugin-feed-mdx
This is a fork of gatsby-plugin-feed. Create an RSS feed (or multiple feeds) for your Gatsby site with MDX.
Install
npm install --save gatsby-plugin-feed-mdx
How to Use
// In your gatsby-config.js
module.exports = {
plugins: [
{
resolve: `gatsby-plugin-feed-mdx`,
options: {
query: `
{
site {
siteMetadata {
title
description
siteUrl
site_url: siteUrl
}
}
}
`,
feeds: [
{
serialize: ({ query: { site, allMdx } }) => {
return allMdx.edges.map(edge => {
return Object.assign({}, edge.node.frontmatter, {
description: edge.node.excerpt,
date: edge.node.frontmatter.date,
url: site.siteMetadata.siteUrl + "/blog" + edge.node.fields.slug,
guid: site.siteMetadata.siteUrl + "/blog" + edge.node.fields.slug,
custom_elements: [{ "content:encoded": edge.node.html }]
});
});
},
query: `
{
allMdx(
sort: { order: DESC, fields: [frontmatter___date] },
) {
edges {
node {
excerpt
html
fields { slug }
frontmatter {
title
date
}
}
}
}
}
`,
output: "/rss.xml",
title: "Your Site's RSS Feed",
// optional configuration to insert feed reference in pages:
// if `string` is used, it will be used to create RegExp and then test if pathname of
// current page satisfied this regular expression;
// if not provided or `undefined`, all pages will have feed reference inserted
match: "^/blog/"
}
]
}
}
]
};
Each feed must include output
, query
, and title
. Additionally, it is strongly recommended to pass a custom serialize
function, otherwise an internal serialize function will be used which may not exactly match your particular use case.
match
is an optional configuration, indicating which pages will have feed reference included. The accepted types of match
are string
or undefined
. By default, when match
is not configured, all pages will have feed reference inserted. If string
is provided, it will be used to build a RegExp and then to test whether pathname
of current page satisfied this regular expression. Only pages that satisfied this rule will have feed reference included.
All additional options are passed through to the rss
utility. For more info on those additional options, explore the itemOptions
section of the rss
package.
Check out an example of how you could implement to your own site, with a custom serialize
function, and additional functionality.
NOTE: This plugin only generates the xml
file(s) when run in production
mode! To test your feed, run: gatsby build && gatsby serve
.