metalsmith-feed

1.0.0 • Public • Published

metalsmith-feed

npm Build Status Code Style: prettier

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 to 20. Set to false 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 (like description and url) have default mappings that support Metalsmith plugin conventions. Many other fields (like title, author, and date) work great without any customization. You can customize any of these fields in preprocess.

    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'
  })
);

Dependents (11)

Package Sidebar

Install

npm i metalsmith-feed

Weekly Downloads

107

Version

1.0.0

License

MIT

Unpacked Size

58.5 kB

Total Files

36

Last publish

Collaborators

  • hurrymaplelad