gridsome-plugin-rss v1.4.0
gridsome-plugin-rss
Generate an RSS feed from your Gridsome data store
Install
yarn add gridsome-plugin-rssnpm install gridsome-plugin-rss
Usage
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'
}
}
}
]
}Options
contentTypeName
- Type:
stringrequired
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',
})latest
- Type:
booleanoptional
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.
dateField
- Type:
stringoptional - Default: 'date'
If set, it will sort your items chonologically by the date field you set.
filterItems
- Type:
Functionoptional - 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'maxItems
- Type:
numberoptional
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.
feedOptions
- Type
objectrequired
The top level options for your RSS feed. See dylang/node-rss#feedoptions for all options
feedItemOptions(node)
- Type
Functionrequired - 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,
})output
- Type
objectoptional - Defaults:
dir:./distname: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
}