2026-02-14 17:38:02 +00:00

56 lines
1.4 KiB
JavaScript

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`)
});
};