feat(website): init
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
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;
|
||||
@@ -0,0 +1,63 @@
|
||||
const path = require('path');
|
||||
const utils = require('./utils');
|
||||
|
||||
const defaultTemplate = path.resolve('./src/templates/default-page.js');
|
||||
|
||||
const mdQuery = `
|
||||
{
|
||||
pages: allMdx {
|
||||
edges {
|
||||
node {
|
||||
fields {
|
||||
slug
|
||||
}
|
||||
frontmatter {
|
||||
published
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const filterSpecialPages = (mdPage) => {
|
||||
const slug = mdPage.node.fields.slug;
|
||||
return slug.indexOf('/blog') !== 0 && slug.indexOf('/projects') !== 0;
|
||||
};
|
||||
|
||||
const createMdPages = (createPage, mdPages) => {
|
||||
mdPages
|
||||
.filter(filterSpecialPages)
|
||||
.filter(utils.filterPublished)
|
||||
.forEach((mdPage) => {
|
||||
createPage({
|
||||
path: mdPage.node.fields.slug,
|
||||
component: defaultTemplate,
|
||||
context: {
|
||||
slug: mdPage.node.fields.slug,
|
||||
fields: mdPage.node.fields,
|
||||
},
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const mdPagesGenerator = (createPage, graphql) =>
|
||||
new Promise((resolve, reject) => {
|
||||
resolve(
|
||||
graphql(mdQuery).then((result) => {
|
||||
if (result.errors) {
|
||||
console.log(result.errors);
|
||||
reject(result.errors);
|
||||
}
|
||||
|
||||
const mdPages = result.data.pages.edges;
|
||||
try {
|
||||
createMdPages(createPage, mdPages);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
module.exports = mdPagesGenerator;
|
||||
@@ -0,0 +1,8 @@
|
||||
function filterPublished(post) {
|
||||
const isPublished = post.node.frontmatter && post.node.frontmatter.published;
|
||||
return process.env.NODE_ENV === 'development' || isPublished;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
filterPublished,
|
||||
};
|
||||
Reference in New Issue
Block a user