Skip to content

hurrymaplelad/metalsmith-feed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

A metalsmith plugin to generate an RSS feed for a collection

Resources

Stars

Watchers

Forks

Packages

No packages published