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 🙏

© 2024 – Pkg Stats / Ryan Hefner

gatsby-plugin-apollo

v4.0.3

Published

Set up your Gatsby project to use Apollo

Downloads

13,887

Readme

gatsby-plugin-apollo

This plugin sets up your Gatsby project to use Apollo Client. It wraps your app in an ApolloProvider so that you can use GraphQL queries and mutations in your components.

import {useQuery} from '@apollo/client';

function Cupcake() {
  const {data, loading, error} = useQuery(GET_CUPCAKE); // <-- just works
}

To learn all about GraphQL and Apollo, check out the Lift-off course on Odyssey, Apollo's learning platform.

Installation

To use this plugin, you'll also need to install your own copy of @apollo/client. This package exports all of the tools you'll need to make GraphQL queries in your app.

npm install gatsby-plugin-apollo @apollo/client graphql

Once installed, add the plugin to your Gatsby config.

// gatsby-config.js
module.exports = {
  plugins: ['gatsby-plugin-apollo']
};

Configuration

This plugin supports two methods of configuration:

Plugin options

For simple configurations, you can supply many of the ApolloClient constructor options directly to the plugin in your Gatsby config.

// gatsby-config.js
module.exports = {
  plugins: [
    {
      resolve: 'gatsby-plugin-apollo',
      options: {
        uri: 'https://example.com/graphql'
      }
    }
  ]
};

Due to a limitation on the types of options that can be passed to a Gatsby plugin, only certain constructor options can be passed as plugin options. Options that require an instance of a JavaScript class, like cache or link can't be serialized as JSON, so they can't be configured in this way.

For more complex configurations, the client shadowing method allows you to define your own custom Apollo Client instance to be used by the plugin.

Client shadowing

You can configure this plugin to use your own custom Apollo Client instance by creating a client.js file in src/gatsby-plugin-apollo that exports your client. You can create your client however you like, as long as you remember these important details:

  1. You must provide an isomorphic fetch implementation (such as isomorphic-fetch) as an option to HttpLink
  2. Your client instance must be the default export
// src/gatsby-plugin-apollo/client.js
import fetch from 'isomorphic-fetch';
import {ApolloClient, HttpLink, InMemoryCache} from '@apollo/client';

const client = new ApolloClient({
  cache: new InMemoryCache(),
  link: new HttpLink({
    uri: 'https://api.spacex.land/graphql/',
    fetch
  })
});

export default client;

This configuration method should be used if you need to customize your cache or use a complex link, such as sending a JWT along with every request or enabling subscriptions using a WebSocketLink.

License

MIT