npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

gatsby-source-atom

v0.3.0

Published

Gatsby source plugin for adding an Atom feed as a data source

Readme

gatsby-source-atom

Plugin for pulling data into Gatsby.js from an Atom feed (using FeedParser).

Install

npm install --save gatsby-source-atom

How to use

// In your gatsby-config.js
module.exports = {
  plugins: [
    // You can have multiple instances of this plugin
    // to read source nodes from different URLs.

    {
      resolve: `gatsby-source-atom`,
      options: {
        source: `https://<example-site>/atom`,
        exposeBasalElements: true
      }
    },
    {
      resolve: `gatsby-source-atom`,
      options: {
        source: `http://<example-site>/blog/atom`,
        additionalEntryFields: ["custom_tag"]
      }
    }
  ]
};

Under the hood

The plugin uses FeedParser internally and by default only exposes processed elements supported by FeedParser because sometimes the basal elements give trouble when creating gatsby nodes. The following fields are available by default

Feed Fields

  • title,
  • description,
  • link,
  • xmlurl,
  • date,
  • pubdate,
  • author,
  • language,
  • image,
  • favicon,
  • copyright,
  • generator,
  • categories

Entry Fields

  • title,
  • description,
  • link,
  • origlink,
  • permalink,
  • date,
  • pubdate,
  • author,
  • guid,
  • comments,
  • image,
  • categories,
  • source,
  • enclosures

Options

  • source string: A valid URL to the Atom feed
  • exposeBasalElements boolean (optional: false by default): Set this to true to query atom elements such as atom_id directly in GraphQL. You might see warnings during your gatsby build. This is usually because the values for a field name are inconsistent between entries. In that case, that particular field will not appear in GraphQL, but nothing else will be affected. It is safe to use except for the warnings.

  • additionalEntryFields array of strings (optional: [] by default): If there are specific elements in your feed entries that are not part of the processed entry fields mentioned above, you can add them here. If exposeBasalElements is enabled, this option will have no effect.

  • additionalMetaFields array of strings (optional: [] by default): If there are specific elements in your feed's metadata that are not part of the processed meta fields mentioned above, you can add them here. If exposeBasalElements is enabled, this option will have no effect.

Note: If you don't mind the warnings, exposeBasalElements is the easiest way to get most of the elements in the feed directly. But if you want to get rid of the warnings, you could enable exposeBasalElements temporarily to identify fields that you need to add to additionalEntryFields or additionalMetaFields and then turn it off. This will prevent gatsby from trying to create unnecessary nodes.

How to query

You can query all entries from all your sources together as follows:

{
  allAtomEntry {
    edges {
      node {
        title
        link
      }
    }
  }
}

You can also access them separately based on source url and query meta information as follows:

{
  allAtomFeed {
    edges {
      node {
        author
        description
        childrenAtomEntry {
          title
          link
        }
      }
    }
  }
}