Skip to content

Gatsby plugin that generates RSS 2, Atom and JSON feeds for your site.

License

Notifications You must be signed in to change notification settings

Alanaktion/gatsby-plugin-advanced-feed

 
 

Repository files navigation

@fec/gatsby-plugin-advanced-feed

Gatsby plugin that generates RSS 2, Atom and JSON feeds for your site.

Unit tests Integration tests

Made by 👨‍💻 Florian Eckerstorfer in 🎡 Vienna, Europe.

Table of Contents

  1. Features
  2. Differences to gatsby-plugin-feed
  3. Installation & Setup
  4. Configuration
  5. Code of Conduct
  6. Change log
  7. License

Features

  • Generates RSS 2.0
  • Generates Atom 1.0
  • Generates JSON Feed 1.0
  • Supports multiple feeds

Differences to gatsby-plugin-feed

  • ✅ Supports Atom 1.0 and JSON Feed 1.0 in addition to RSS 2.0
  • ✅ More options to customize feed description, copyright, author, etc
  • ❌ Does not support serialize and query options (yet)

Installation & Setup

First you need to install the plugin with NPM or Yarn:

npm install @fec/gatsby-plugin-advanced-feed --save
yarn add @fec/gatsby-plugin-advanced-feed

Versions 2.x of this plugin are tested with Gatsby v3, you might need to use @fec/gatsby-plugin-advanced-feed@1 if you are still using Gatsby v2.

Next you need add the plugin to the plugins list in gatsby-config.js:

// ./gatsby-config.js
module.exports = {
  // ...
  plugins: [
    // ...
    '@fec/gatsby-plugin-advanced-feed',
  ],
};

⚠️ Feeds are only generated on gatsby build, when running the local development server (gatsby develop) no feeds will be generated.

Configuration

You can configure @fec/gatsby-plugin-advanced-feed. The following example contains all configuration options and their default value:

// ./gatsby-config.js
module.exports = {
  // ...
  plugins: [
    // ...
    {
    resolve: '@fec/gatsby-plugin-advanced-feed',
    options: {
      feeds: [
        {
          // Configure the feed; smart defaults are choosen if not set
          author: undefined,      // default: site.siteMetadata.author
          copyright: undefined,   // default: "All rights reserved {year}, {site.siteMetadata.author}"
          description: undefined, // default: site.siteMetadata.description
          email: false,           // default: false ➞ no email in feed; undefined ➞ site.siteMetadata.email
          id: undefined,          // default: site.siteMetadata.siteUrl
          link: undefined,        // default: site.siteMetadata.siteUrl
          title: undefined,       // default: site.siteMetadata.title

          // Add <link> tags in <head> to feeds
          createLinkInHead: true, // `true` for all pages or regular expression to match pathnames

          // Number of articles to include in feed
          limit: 10,

          // Include all pages which `fileAbsolutePath` matches this regular expression
          match: '^/blog/',

          // File names of generated feeds
          output: {
            rss2: 'rss.xml',
            atom: 'atom.xml',
            json: 'feed.json',
          },
        }
      ],
    },
  ],
};

Include only in certain pages

@fec/gatsby-plugin-advanced-feed allows you to link the feeds in the <head> or your page. This can be configured on a per-feed basis. If the option createLinkInHead for a feed is true the <link> will be included on all pages. You can include the <link> only for certain pages by specifying a regular expression.

In the following example the <link> tags will only be inserted on all pages which pathname matches the regular expression /^\/blog/:

// ./gatsby-config.js
module.exports = {
  // ...
  plugins: [
    // ...
    {
      resolve: '@fec/gatsby-plugin-advanced-feed',
      options: {
        feeds: [
          createLinkInHead: /^\/blog/,
        ]
      }
    }
  ],
};

Code of Conduct

See CODE_OF_CONDUCT

Change log

See CHANGELOG

License

See LICENSE

About

Gatsby plugin that generates RSS 2, Atom and JSON feeds for your site.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 92.4%
  • Shell 7.6%