text: const _ = require('lodash');
  const path = require('path');
  const { createFilePath } = require('gatsby-source-filesystem');
  
  exports.createPages = ({ boundActionCreators, graphql }) => {
    const { createPage } = boundActionCreators;
  
    return graphql(`
      {
        allMarkdownRemark(limit: 1000) {
          edges {
            node {
              id
              fields {
                slug
              }
              frontmatter {
                tags
                templateKey
              }
            }
          }
        }
      }
    `).then(result => {
      if (result.errors) {
        result.errors.forEach(e => console.error(e.toString())); // eslint-disable-line no-console
        return Promise.reject(result.errors);
      }
  
      const posts = result.data.allMarkdownRemark.edges;
  
      posts.forEach(edge => {
        const { id } = edge.node;
        createPage({
          path: edge.node.fields.slug,
          tags: edge.node.frontmatter.tags,
          component: path.resolve(`src/templates/${String(edge.node.frontmatter.templateKey)}.js`),
          // additional data can be passed via context
          context: {
            id,
          },
        });
      });
  
      // Tag pages:
      let tags = [];
      // Iterate through each post, putting all found tags into `tags`
      posts.forEach(edge => {
        if (_.get(edge, 'node.frontmatter.tags')) {
          tags = tags.concat(edge.node.frontmatter.tags);
        }
      });
      // Eliminate duplicate tags
      tags = _.uniq(tags);
  
      // Make tag pages
      tags.forEach(tag => {
        const tagPath = `/tags/${_.kebabCase(tag)}/`;
  
        createPage({
          path: tagPath,
          component: path.resolve('src/templates/tags.js'),
          context: {
            tag,
          },
        });
      });
  
      return Promise.resolve(posts);
    });
  };
  
  exports.onCreateNode = ({ node, boundActionCreators, getNode }) => {
    const { createNodeField } = boundActionCreators;
  
    if (node.internal.type === 'MarkdownRemark') {
      const value = createFilePath({ node, getNode });
      createNodeField({
        name: 'slug',
        node,
        value,
      });
    }
  };
  
  exports.modifyWebpackConfig = ({ config, stage }) => {
    if (stage === 'build-html') {
      config.loader('null', {
        test: /react-leaflet|leaflet\.sync|react-modal|leaflet-minimap|leaflet/,
        loader: 'null-loader',
      });
    }
  };
  