metalsmith-feed v1.0.0
metalsmith-feed
A metalsmith plugin to generate an RSS feed for a collection.
Just a thin wrapper around the rss module.
Requires metalsmith-collections. Plays nicely with permalinks, more, and excerpts.
Usage
const collections = require('metalsmith-collections');
const feed = require('metalsmith-feed');
Metalsmith('example')
.metadata(
(site: {
title: 'Geocities',
url: 'http://example.com',
author: 'Philodemus'
})
)
.use(collections({posts: '*.html'}))
.use(feed({collection: 'posts'}));Options
Take a look at the tests for example usage.
collectionstring Required. The name of the configured metalsmith-collection to feed.limitNumber Optional. Maximum number of documents to show in the feed. Defaults to20. Set tofalseto include all documents.destinationstring Optional. File path to write the rendered XML feed. Defaults to'rss.xml'.preprocessfunction Optional. Map collection entries to RSS items. Some fields (likedescriptionandurl) have default mappings that support Metalsmith plugin conventions. Many other fields (liketitle,author, anddate) work great without any customization. You can customize any of these fields inpreprocess.Metalsmith('example').use( feed({ collection: 'posts', preprocess: file => ({ ...file, // Make all titles uppercase title: file.title.toUpperCase() /* description: ... Description defaults to `file.less` from metalsmith-more, `file.excerpt` from metalsmith-excerpt, and finally the full `file.contents`
url: ...
If files have path metadata (perhaps from metalsmith-permalinks)
but not url metadata, we'll prefix path with site_url to
generate links.
*/
})
})
);
Remaining options are passed to the [rss](https://github.com/dylang/node-rss) module as `feedOptions`, along with `metadata.site`.
### Multiple Feeds
Have a few collections you'd like to export? Register this plugin once for each:
```js
Metalsmith('example')
.use(
collections({
foo: 'foo/*.html',
bar: 'bar/*.html'
})
)
.use(
feed({
collection: 'foo',
destination: 'foo-rss.xml'
})
)
.use(
feed({
collection: 'bar',
destination: 'bar-rss.xml'
})
);