Travis build: 407

This commit is contained in:
30secondsofcode
2019-08-26 10:03:49 +00:00
parent 2776b342dd
commit 983bc086c1
57 changed files with 376 additions and 873 deletions

View File

@ -1,25 +1,22 @@
const path = require(`path`);
const { createFilePath } = require(`gatsby-source-filesystem`);
const path = require(`path`)
const { createFilePath } = require(`gatsby-source-filesystem`)
const toKebabCase = str =>
str &&
str
.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)
.map(x => x.toLowerCase())
.join('-');
.join('-')
exports.createPages = ({ graphql, actions }) => {
const { createPage } = actions;
const { createPage } = actions
const snippetPage = path.resolve(`./src/docs/templates/SnippetPage.js`);
const tagPage = path.resolve(`./src/docs/templates/TagPage.js`);
const snippetPage = path.resolve(`./src/docs/templates/SnippetPage.js`)
const tagPage = path.resolve(`./src/docs/templates/TagPage.js`)
return graphql(
`
{
allMarkdownRemark(
sort: { fields: [frontmatter___title], order: ASC }
limit: 1000
) {
allMarkdownRemark(sort: { fields: [frontmatter___title], order: ASC }, limit: 1000) {
edges {
node {
fields {
@ -33,61 +30,60 @@ exports.createPages = ({ graphql, actions }) => {
}
}
}
`,
`
).then(result => {
if (result.errors) {
throw result.errors;
throw result.errors
}
// Create individual snippet pages.
const snippets = result.data.allMarkdownRemark.edges;
const snippets = result.data.allMarkdownRemark.edges
snippets.forEach((post, index) => {
if (post.node.fileAbsolutePath.indexOf('README') !== -1)
return;
if (post.node.fileAbsolutePath.indexOf('README') !== -1) return
createPage({
path: `/snippet${post.node.fields.slug}`,
component: snippetPage,
context: {
slug: post.node.fields.slug,
},
});
});
slug: post.node.fields.slug
}
})
})
// Create tag pages.
const tags = snippets.reduce((acc, post) => {
if (!post.node.frontmatter || !post.node.frontmatter.tags) return acc;
const primaryTag = post.node.frontmatter.tags.split(',')[0];
if (!acc.includes(primaryTag)) acc.push(primaryTag);
return acc;
}, []);
if (!post.node.frontmatter || !post.node.frontmatter.tags) return acc
const primaryTag = post.node.frontmatter.tags.split(',')[0]
if (!acc.includes(primaryTag)) acc.push(primaryTag)
return acc
}, [])
tags.forEach(tag => {
const tagPath = `/tag/${toKebabCase(tag)}/`;
const tagRegex = `/^\\s*${tag}/`;
const tagPath = `/tag/${toKebabCase(tag)}/`
const tagRegex = `/^\\s*${tag}/`
createPage({
path: tagPath,
component: tagPage,
context: {
tag,
tagRegex,
},
});
});
tagRegex
}
})
})
return null;
});
};
return null
})
}
exports.onCreateNode = ({ node, actions, getNode }) => {
const { createNodeField } = actions;
const { createNodeField } = actions
if (node.internal.type === `MarkdownRemark`) {
const value = createFilePath({ node, getNode });
const value = createFilePath({ node, getNode })
createNodeField({
name: `slug`,
node,
value,
});
value
})
}
};
}