UNPKG

gatsby-remark-dictionary

Version:

Create a dictionary of word and phrases to be converted to highlighted values and links. define once and all phrases will be converted during build time.

115 lines (98 loc) 2.71 kB
const componentWithMDXScope = require('gatsby-plugin-mdx/component-with-mdx-scope'); const path = require('path'); const startCase = require('lodash.startcase'); const config = require('./config'); exports.createPages = ({ graphql, actions }) => { const { createPage } = actions; return new Promise((resolve, reject) => { resolve( graphql( ` { allMdx { edges { node { fields { id } tableOfContents fields { slug } } } } } ` ).then(result => { if (result.errors) { console.log(result.errors); // eslint-disable-line no-console reject(result.errors); } // Create blog posts pages. result.data.allMdx.edges.forEach(({ node }) => { createPage({ path: node.fields.slug ? node.fields.slug : '/', component: path.resolve('./src/templates/docs.js'), context: { id: node.fields.id, }, }); }); }) ); }); }; exports.onCreateWebpackConfig = ({ actions }) => { actions.setWebpackConfig({ resolve: { modules: [path.resolve(__dirname, 'src'), 'node_modules'], alias: { $components: path.resolve(__dirname, 'src/components'), buble: '@philpl/buble', // to reduce bundle size }, }, }); }; exports.onCreateBabelConfig = ({ actions }) => { actions.setBabelPlugin({ name: '@babel/plugin-proposal-export-default-from', }); }; exports.onCreateNode = ({ node, getNode, actions }) => { const { createNodeField } = actions; if (node.internal.type === `Mdx`) { const parent = getNode(node.parent); let value = parent.relativePath.replace(parent.ext, ''); if (value === 'index') { value = ''; } if (config.gatsby && config.gatsby.trailingSlash) { createNodeField({ name: `slug`, node, value: value === '' ? `/` : `/${value}/`, }); } else { createNodeField({ name: `slug`, node, value: `/${value}`, }); } createNodeField({ name: 'id', node, value: node.id, }); createNodeField({ name: 'title', node, value: node.frontmatter.title || startCase(parent.name), }); } if (node.internal.type === `MarkdownRemark`) { debugger; console.log(node.internal.type) } };