67 lines
1.2 KiB
JavaScript
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;
|