-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gatsby-config.ts
108 lines (101 loc) · 2.85 KB
/
gatsby-config.ts
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import type { GatsbyConfig } from "gatsby";
const siteURL = "https://ops.pydis.wtf";
const config: GatsbyConfig = {
siteMetadata: {
title: `PyDis Ops`,
siteUrl: siteURL,
},
// More easily incorporate content into your pages through automatic TypeScript type generation and better GraphQL IntelliSense.
// If you use VSCode you can also use the GraphQL plugin
// Learn more at: https://gatsby.dev/graphql-typegen
graphqlTypegen: true,
plugins: ["gatsby-plugin-styled-components", "gatsby-plugin-image", "gatsby-plugin-sitemap", {
resolve: 'gatsby-plugin-manifest',
options: {
"icon": "src/images/icon.png"
}
}, "gatsby-plugin-mdx", "gatsby-plugin-sharp", "gatsby-transformer-sharp", {
resolve: 'gatsby-source-filesystem',
options: {
"name": "images",
"path": "./src/images/"
},
__key: "images"
}, {
resolve: 'gatsby-source-filesystem',
options: {
"name": "service_images",
"path": "./service_images/"
},
__key: "service_images"
},
{
resolve: 'gatsby-source-filesystem',
options: {
"name": "pages",
"path": "./src/pages/"
},
__key: "pages"
},
`gatsby-transformer-yaml`,
{
resolve: `gatsby-source-filesystem`,
options: {
path: `./data/`,
},
}, {
resolve: `gatsby-plugin-json-output`,
options: {
siteUrl: siteURL,
graphQLQuery: `
{
services: allServicesYaml {
nodes {
slug
name
description
url
tags
}
tags: distinct(field: {tags: SELECT})
}
images: allFile(filter: {sourceInstanceName: {eq: "service_images"}}) {
nodes {
name
childImageSharp {
resize(height: 256, quality: 100, toFormat: PNG) {
src
}
}
}
}
}
`,
serializeFeed: ({ data }: { data: any }) => {
const serviceImageMap: { [key: string]: string } = {};
data.images.nodes.forEach((node: any) => {
serviceImageMap[node.name] = node.childImageSharp.resize.src;
});
const services = data.services.nodes.map((service: any) => ({
...service,
image: serviceImageMap[service.slug] ? serviceImageMap[service.slug] : serviceImageMap["unknown"],
}));
return services;
},
feedFilename: "services",
nodesPerFeedFile: 100,
}
}],
headers: [
{
source: "/*",
headers: [
{
key: "Referrer-Policy",
value: "strict-origin-when-cross-origin",
}
]
}
]
};
export default config;