-
Notifications
You must be signed in to change notification settings - Fork 0
/
gatsby-config.js
126 lines (123 loc) · 3.57 KB
/
gatsby-config.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//setup dotenv to pass environmental variables using dotenv npm package
require(`dotenv`).config({
path: `.env.${process.env.NODE_ENV}`,
})
// query character information for use with algolia search
const characterQuery = `{
rickAndMortyAPI {
characters {
results {
objectID: id
id
name
image
gender
species
status
}
}
}
}`
// array with currently one index for use with algolia search mapping and returning objects in results array
const queries = [
{
query: characterQuery,
transformer: ({ data }) =>
data.rickAndMortyAPI.characters.results.map(({ ...rest }) => {
return {
...rest,
}
}),
},
]
// site metadata and gatsby plugin configuration file
module.exports = {
// metadata for site for use with graphql
siteMetadata: {
title: `Gatsby Employee Directory`,
titleTemplate: `%s · Built with GraphQL`,
description: `Rick and Morty Employee Directory built with React, MDbootstrap, Gatsby, and the Rick and Morty GraphQL API`,
siteUrl: `https://gatsbyemployeedirectory.netlify.com`,
author: `Jacob Cavazos`,
keywords: `React, Bootstrap, Gatsby, Material Design, directory, Rick and Morty API, GraphQL`,
image: `/src/images/logo.png`,
twitterUsername: `@jcavazos84`,
},
plugins: [
// algolia plugin for search
{
resolve: `gatsby-plugin-algolia`,
options: {
appId: process.env.ALGOLIA_APP_ID,
apiKey: process.env.ALGOLIA_API_KEY,
indexName: process.env.ALGOLIA_INDEX_NAME, // for all queries
queries,
chunkSize: 10000, // default: 1000
},
},
// plugin to create _headers file for netlify
`gatsby-plugin-netlify`,
// plugin to create helmet component to inject code into head html tag
`gatsby-plugin-react-helmet`,
`gatsby-transformer-sharp`,
// plugin enables automatic creation of sitemap.xml file at root/sitemap.xml
`gatsby-plugin-sitemap`,
// this plugin enables image processing
`gatsby-plugin-sharp`,
`gatsby-plugin-eslint`,
// this (optional) plugin enables Progressive Web App + Offline functionality
// To learn more, visit: https://gatsby.app/offline
`gatsby-plugin-offline`,
{
resolve: `gatsby-source-filesystem`,
options: {
name: `images`,
path: `${__dirname}/src/images`,
},
},
// plugin to automatically create manifest for PWA
{
resolve: `gatsby-plugin-manifest`,
options: {
name: `gatsby-site-employee-directory`,
short_name: `Directory`,
start_url: `/`,
display: `standalone`,
background_color: `#fff`,
theme_color: `#fff`,
icon: `${__dirname}/src/images/logo.png`,
},
},
// plugin to automaticall create robots.txt file
{
resolve: `gatsby-plugin-robots-txt`,
options: {
host: `https://www.example.com`,
sitemap: `https://www.example.com/sitemap.xml`,
policy: [{ userAgent: `*`, allow: `/` }],
},
},
// plugin to pull and use data from rick and morty graphql endpoint
{
resolve: `gatsby-source-graphql`,
options: {
typeName: `rmAPI`,
fieldName: `rickAndMortyAPI`,
url: `https://rickandmortyapi.com/graphql`,
},
},
{
resolve: `gatsby-plugin-html-attributes`,
options: {
lang: `en`,
},
},
// TODO: implement google analytics tracking
// {
// resolve: `gatsby-plugin-google-analytics`,
// options: {
// trackingId: ''
// }
// }
],
}