metalsmith-feed
v1.0.0
Published
A metalsmith plugin to generate an RSS feed for a collection
Downloads
288
Maintainers
Readme
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.
collection
string Required. The name of the configured metalsmith-collection to feed.limit
Number Optional. Maximum number of documents to show in the feed. Defaults to20
. Set tofalse
to include all documents.destination
string Optional. File path to write the rendered XML feed. Defaults to'rss.xml'
.preprocess
function Optional. Map collection entries to RSS items. Some fields (likedescription
andurl
) 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'
})
);