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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@dschau/gatsby-source-github

v0.0.1

Published

A gatsby source plugin to source Github's GraphQL API for build-time data for Gatsby

Readme

gatsby-source-github

Build Status

Source plugin for pulling in Github data (using it's GraphQL API) at buildtime for static generation and further GraphQL querying with Gatsby

Install

npm install @dschau/gatsby-source-github

How to use

In your gatsby-config.js:

plugins: [
  {
    resolve: '@dschau/gatsby-source-github',
    options: {
      headers: {
        Authorization: `Bearer YOUR_GITHUB_PERSONAL_ACCESS_TOKEN`, // https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/
      },
      queries: [
        `{
          repository(owner: "nebraskajs", name: "speaker-signup") {
            issues(last: 20, states: OPEN) {
              edges {
                node {
                  id
                  author {
                    avatarUrl
                    login
                    url
                  }
                  bodyHTML
                  title
                  url
                }
              }
            }
          }
        }`,
      ],
    },
  },
];

queries is an array of GraphQL queries. The algorithm to generate Gatsby GraphQL nodes is described below

How to query

In general, use the Github API v4 documentation and in particular, the explorer to craft your queries and refer to the the below algorithm for how to query against these results with Gatsby.

Using variables

Additionally, variables can be used/injectd into the queries. Rather than sending a string in the queries array, send an array like so:

[
  `query getViewer($first: Int!) {
    viewer {
      login
      name
      repositories(first:$first) {
        edges {
          node {
            name
          }
        }
      }
    }
  }`,
  { first: 10 },
];

The algorithm

The algorithm is quite simple. It'll descend through the tree/returned structure, and if it finds an edges key will use the parent of that as the node name. For instance, in the above repository example, githubIssue will be the node name, and allGithubIssues will be the way to query against all nodes. In the viewer example the node name will be githubViewer.

All fields in the node that are queried against in the Github GraphQL query are available to be queried with Gatsby. For example, in the repository example above, id, author (and subfields), bodyHTML, etc. are available to be queried against.