Generate an RSS feed from your Gridsome data store
yarn add gridsome-plugin-rss
npm install gridsome-plugin-rss
module.exports = {
plugins: [
{
use: 'gridsome-plugin-rss',
options: {
contentTypeName: 'BlogPost',
feedOptions: {
title: 'My Awesome Blog',
feed_url: 'https://superblog.com/rss.xml',
site_url: 'https://superblog.com'
},
feedItemOptions: node => ({
title: node.title,
description: node.description,
url: 'https://superblog.com/post/' + node.slug,
author: node.fields.author
}),
output: {
dir: './dist',
name: 'rss.xml'
}
}
}
]
}
- Type:
string
required
The typeName
of the contentType
you wish to generate your RSS file for.
const products = store.addContentType({
typeName: 'BlogPost', // <-- add this to contentTypename
route: '/blog/:slug',
})
- Type:
boolean
optional
If true
, sorts your RSS file with newest items at the top.
NOTE: In order to sort chronologically, all nodes passed to this plugin must have a valid date
property. date
must be a timestamp string or unix timestamp (integer). If all nodes do not have valid dates, RSS items will NOT be sorted. See JS Date Object Parameters on MDN for details.
- Type:
string
optional - Default: 'date'
If set, it will sort your items chonologically by the date field you set.
- Type:
Function
optional - Arg
node
- Returns
boolean
If set, it will filter your items using the function.
// In the options for gridsome-plugin-rss
filterItems: node => node.status === 'published'
- Type:
number
optional
Limits the amount of items included in your RSS feed.
NOTE: Should be used with latest
set to true
, otherwise newer items will be excluded.
- Type
object
required
The top level options for your RSS feed. See dylang/node-rss#feedoptions for all options
- Type
Function
required - Arg
node
- Returns
object
The item level options for your RSS feed.
For each option (see dylang/node-rss#itemoptions for all options), node
is the object that you passed into Collection.addNode
NOTE: Since Gridsome will convert any node
field into camelCase, make sure that any property you access on node
is also camelCased.
Example:
// In gridsome.server.js
BlogPost.addNode({
title: BlogPost.title,
description: BlogPost.description,
fields: {
AuthorName: BlogPost.AuthorName,
'url-slug': BlogPost['url-slug']
}
})
...
// In the options for gridsome-plugin-rss
feedItemOptions: node => ({
title: node.title,
description: node.description,
url: 'https://superblog.com/post/' + node.fields.urlSlug,
author: node.fields.authorName,
})
- Type
object
optional - Defaults:
dir
:./dist
name
:rss.xml
Specify the output directory and filename of the generated RSS.
By default, it is your configured build output directory (the configured value for key outputDir
) or just ./dist
dir
- a relative path to desired output directory.
name
- the filename of your XML file. You can omit the extension if you want to.
Example:
output: {
dir: './dist/',
name: 'rss' // or rss.xml
}