This repository was archived by the owner on Mar 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgatsby-node.js
94 lines (89 loc) · 2.07 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const fetch = require('node-fetch')
const { createFilePath } = require(`gatsby-source-filesystem`)
const { createRemoteFileNode } = require('gatsby-source-filesystem')
exports.onCreateNode = async ({
node,
getNode,
actions: { createNode, createNodeField },
store,
cache,
createNodeId,
}) => {
// creating item slug for work
if (node.internal.type === `MarkdownRemark`) {
const slug = createFilePath({ node, getNode, basePath: `work` })
createNodeField({
node,
name: `slug`,
value: slug.replace(/\//g, ''),
})
}
// creating featured image for blog
if (node.internal.type === `DevArticles` && node.article.cover_image) {
const url = node.article.cover_image
const parentNodeId = node.id
let fileNode = await createRemoteFileNode({
url,
store,
cache,
createNode,
createNodeId,
parentNodeId,
})
if (fileNode) {
node.cover_image___NODE = fileNode.id
}
}
}
exports.createPages = async ({ graphql, actions: { createPage } }) => {
// populating blog
const blogListResult = await graphql(`
query {
allDevArticles {
edges {
node {
article {
slug
}
}
}
}
}
`)
const blogSlugList = blogListResult.data.allDevArticles.edges.map((item) => {
return item.node.article.slug
})
for (const slug of blogSlugList) {
createPage({
path: `/blog/${slug}`,
context: { slug },
component: require.resolve(`./src/templates/blog.js`),
})
}
// populating work
const workListResult = await graphql(`
query {
allMarkdownRemark {
edges {
node {
fields {
slug
}
}
}
}
}
`)
const workSlugList = workListResult.data.allMarkdownRemark.edges.map(
(item) => {
return item.node.fields.slug
}
)
for (const slug of workSlugList) {
createPage({
path: `/work/${slug}`,
context: { slug },
component: require.resolve(`./src/templates/work.js`),
})
}
}