An open API service indexing awesome lists of open source software.

https://github.com/geocine/gatsby-plugin-feed

Create an RSS feed (or multiple feeds) for your Gatsby site.
https://github.com/geocine/gatsby-plugin-feed

Last synced: 6 months ago
JSON representation

Create an RSS feed (or multiple feeds) for your Gatsby site.

Awesome Lists containing this project

README

          

# @geocine/gatsby-plugin-feed

Forked from [gatsbyjs/gatsby](https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-feed), original work of Nicholas Young

Create an RSS feed (or multiple feeds) for your Gatsby site.

## Install

`npm install @geocine/gatsby-plugin-feed`

## How to Use

```javascript
// In your gatsby-config.js
module.exports = {
plugins: [
{
resolve: `@geocine/gatsby-plugin-feed`,
options: {
query: `
{
site {
siteMetadata {
title
description
siteUrl
site_url: siteUrl
}
}
}
`,
feeds: [
{
serialize: ({ query: { site, allMarkdownRemark } }) => {
return allMarkdownRemark.nodes.map(node => {
return Object.assign({}, node.frontmatter, {
description: node.excerpt,
date: node.frontmatter.date,
url: site.siteMetadata.siteUrl + node.fields.slug,
guid: site.siteMetadata.siteUrl + node.fields.slug,
custom_elements: [{ "content:encoded": node.html }],
})
})
},
query: `
{
allMarkdownRemark(
sort: { order: DESC, fields: [frontmatter___date] },
) {
nodes {
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/",
// optional configuration to specify external rss feed, such as feedburner
link: "https://feeds.feedburner.com/gatsby/blog",
// optional to specify custom namespace for node elements
custom_namespaces: {
media: 'http://search.yahoo.com/mrss/',
}
},
],
},
},
],
}
```

Each feed must include `output`, `query`, `title`, and `serialize`. You'll need to write the `serialize` function in order to fit your 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.

`link` is an optional configuration that will override the default generated rss link from `output`.

All additional options are passed through to the [`rss`][rss] utility. For more info on those additional options, [explore the `itemOptions` section of the `rss` package](https://www.npmjs.com/package/rss#itemoptions).

Check out an example of [how you could implement](https://www.gatsbyjs.com/docs/adding-an-rss-feed/) 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`._

[rss]: https://www.npmjs.com/package/rss