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'
}
}
}
]
}
string
requiredThe 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',
})
boolean
optionalIf 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.
string
optionalIf set, it will sort your items chonologically by the date field you set.
Function
optionalnode
boolean
If set, it will filter your items using the function.
// In the options for gridsome-plugin-rss
filterItems: node => node.status === 'published'
number
optionalLimits the amount of items included in your RSS feed.
NOTE: Should be used with latest
set to true
, otherwise newer items will be excluded.
object
requiredThe top level options for your RSS feed. See dylang/node-rss#feedoptions for all options
Function
requirednode
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,
})
object
optionaldir
: ./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
}