Files
xyflow/website/generators/docs.js
T
2020-10-05 10:14:49 +02:00

67 lines
1.2 KiB
JavaScript

const path = require('path');
const docsTemplate = path.resolve('./src/templates/doc-page.js');
const docPagesQuery = `
{
docs: allMdx(
filter: {
fields: {
slug: { regex: "/docs/" },
}
}
) {
edges {
node {
fields {
slug
}
frontmatter {
title
}
}
}
}
}
`;
const createDocPages = (createPage, docPages) => {
const menu = docPages.map((page) => ({
slug: page.node.fields.slug,
title: page.node.frontmatter.title,
}));
docPages.forEach((page) => {
createPage({
path: page.node.fields.slug,
component: docsTemplate,
context: {
slug: page.node.fields.slug,
menu,
},
});
});
};
const blogGenerator = (createPage, graphql) =>
new Promise((resolve, reject) => {
resolve(
graphql(docPagesQuery).then((result) => {
if (result.errors) {
console.log(result.errors);
reject(result.errors);
}
const docPages = result.data.docs.edges;
try {
createDocPages(createPage, docPages);
} catch (e) {
console.log(e);
}
})
);
});
module.exports = blogGenerator;