feat(website): init

This commit is contained in:
moklick
2020-10-05 10:14:49 +02:00
parent f54b93b319
commit 277e032770
140 changed files with 30517 additions and 0 deletions
+66
View File
@@ -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;
+63
View File
@@ -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;
+8
View File
@@ -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,
};