www/gatsby-node.js (46 lines of code) (raw):

const path = require('path'); const config = require('./gatsby-config'); exports.createPages = ({ actions, graphql }) => { const { createPage } = actions; const componentTemplate = path.join( __dirname, 'src', 'templates', 'component.js' ); return new Promise((resolve, reject) => { resolve( graphql(` { allComponentMetadata { edges { node { displayName } } } } `).then((result) => { if (result.errors) { reject(result.errors); } const { componentPages } = config.siteMetadata; result.data.allComponentMetadata.edges .filter(({ node: { displayName } }) => componentPages.some((page) => page.displayName === displayName) ) .forEach(({ node: { displayName } }) => { createPage({ path: componentPages.find( (page) => page.displayName === displayName ).path, component: componentTemplate, context: { displayName, }, }); }); }) ); }); };