-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
gatsby-node.js
59 lines (50 loc) · 1.41 KB
/
gatsby-node.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
const path = require("path")
const createPostPage = (post, createPage) => {
const {slug} = post.frontmatter
createPage({
path: `/posts/${slug}`,
component: path.resolve("./src/templates/post.js"),
context: {slug},
})
}
const createTagPage = (tag, createPage) => {
createPage({
path: `/tags/${tag}`,
component: path.resolve("./src/templates/tag.js"),
context: {tag},
})
}
const createPages = async ({graphql, actions}) => {
const {createPage} = actions
const {data} = await graphql(`
{
allMarkdownRemark(
filter: {fileAbsolutePath: {regex: "/content/posts/"}}
) {
nodes {
frontmatter {
slug
}
}
group(field: frontmatter___tags) {
fieldValue
}
}
}
`)
const posts = data.allMarkdownRemark.nodes
posts.map(post => createPostPage(post, createPage))
const tags = data.allMarkdownRemark.group.map(member => member.fieldValue)
tags.map(tag => createTagPage(tag, createPage))
}
const onCreateWebpackConfig = ({actions}) => {
actions.setWebpackConfig({
resolve: {
modules: [path.resolve(__dirname, "src"), "node_modules"],
},
})
}
module.exports = {
createPages,
onCreateWebpackConfig,
}