12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- const path = require(`path`);
- const _ = require("lodash");
- const { createFilePath } = require(`gatsby-source-filesystem`);
- exports.onCreateNode = ({ node, getNode, actions }, pluginOptions) => {
- const { createNodeField } = actions;
- if (node.internal.type === `MarkdownRemark`) {
- const slug = createFilePath({ node, getNode, basePath: `pages` });
- const parent = getNode(node.parent);
- const idName = _.kebabCase(node.frontmatter.title || parent.name);
- createNodeField({
- node,
- name: `slug`,
- value: slug
- });
- createNodeField({
- node,
- name: `idName`,
- value: idName
- });
- // save the file's directory so it can be used by the Template
- // component to group data in a GraphQL query
- createNodeField({
- node,
- name: `parentRelativeDirectory`,
- value: parent.relativeDirectory
- });
- // set a version field on pages so they can be queried
- // appropriately in the Template component
- let version = pluginOptions.currentVersion;
- if (parent.gitRemote___NODE) {
- const { sourceInstanceName } = getNode(parent.gitRemote___NODE);
- version = sourceInstanceName;
- }
- createNodeField({
- node,
- name: `version`,
- value: version
- });
- }
- };
- exports.createPages = async ({ actions, graphql }, pluginOptions) => {
- actions.createPage({
- path: `/`,
- component: path.resolve(`./src/components/template.js`)
- });
- };
|