Skip to content

Instantly share code, notes, and snippets.

@monachilada
Last active October 16, 2020 19:03
Show Gist options
  • Save monachilada/af7e92a86e0d27ba47a8597ac4e4b105 to your computer and use it in GitHub Desktop.
Save monachilada/af7e92a86e0d27ba47a8597ac4e4b105 to your computer and use it in GitHub Desktop.
Sample gatsby-config.js enabling live preview in Craft CMS
const { createHttpLink } = require('apollo-link-http');
const fetch = require('node-fetch');
const store = require('store');
const sourceNodes = require('gatsby/dist/utils/source-nodes');
require('dotenv').config();
const craftGqlUrl = process.env.CRAFT_GQL_URL;
const craftGqlToken = process.env.CRAFT_GQL_TOKEN;
module.exports = {
plugins: [
{
resolve: 'gatsby-source-graphql',
options: {
typeName: 'Craft',
fieldName: 'craft',
createLink: () =>
createHttpLink({
uri: `${craftGqlUrl}`,
headers: {
Authorization: `Bearer ${craftGqlToken}`,
},
fetch: (uri, options) => {
const token = store.get('X-Craft-Token');
return fetch(
`${uri}${token !== undefined ? `?token=${token}` : ''}`,
options,
);
},
}),
},
},
],
developMiddleware: app => {
app.use('*', (req, res, next) => {
if (req.query.token) {
store.set('X-Craft-Token', req.query.token);
sourceNodes();
}
next();
});
},
};
@jamie-l-robertson
Copy link

@wfendler Ah excellent, thanks for the heads up!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment