56 lines
1.4 KiB
JavaScript
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`)
|
|
});
|
|
};
|