const config = require('./config/website')
const pathPrefix = config.pathPrefix === '/' ? '' : config.pathPrefix
require('dotenv').config({
path: `.env.${process.env.NODE_ENV}`,
})
module.exports = {
pathPrefix: config.pathPrefix,
siteMetadata: {
siteUrl: config.siteUrl + pathPrefix,
title: config.siteTitle,
twitterHandle: config.twitterHandle,
description: config.siteDescription,
keywords: ['Video Blogger'],
canonicalUrl: config.siteUrl,
image: config.siteLogo,
author: {
name: config.author,
minibio: `
<strong>egghead</strong> is the premier place on the internet for
experienced developers to enhance their skills and stay current
in the fast-faced field of web development.
`,
},
organization: {
name: config.organization,
url: config.siteUrl,
logo: config.siteLogo,
},
social: {
twitter: config.twitterHandle,
fbAppID: '',
},
},
plugins: [
{
resolve: 'gatsby-source-filesystem',
options: {
path: `${__dirname}/content/blog`,
name: 'blog',
},
},
{
resolve: `gatsby-plugin-mdx`,
options: {
extensions: ['.mdx', '.md', '.markdown'],
gatsbyRemarkPlugins: [
{
resolve: 'gatsby-remark-images',
options: {
backgroundColor: '#fafafa',
maxWidth: 1035,
},
},
],
},
},
'gatsby-plugin-sharp',
'gatsby-transformer-sharp',
'gatsby-plugin-emotion',
'gatsby-plugin-catch-links',
'gatsby-plugin-react-helmet',
{
resolve: 'gatsby-plugin-manifest',
options: {
name: config.siteTitle,
short_name: config.siteTitleShort,
description: config.siteDescription,
start_url: config.pathPrefix,
background_color: config.backgroundColor,
theme_color: config.themeColor,
display: 'standalone',
icons: [
{
src: '/android-chrome-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: '/android-chrome-512x512.png',
sizes: '512x512',
type: 'image/png',
},
],
},
},
{
resolve: `gatsby-plugin-google-analytics`,
options: {
trackingId: `GOOGLE_ID`,
},
},
{
resolve: `gatsby-plugin-feed`,
options: {
query: `
{
site {
siteMetadata {
title
description
siteUrl
site_url: siteUrl
}
}
}
`,
feeds: [
{
serialize: ({ query: { site, allMdx } }) => {
return allMdx.edges.map(edge => {
return Object.assign({}, edge.node.frontmatter, {
description: edge.node.excerpt,
date: edge.node.fields.date,
url: site.siteMetadata.siteUrl + '/' + edge.node.fields.slug,
guid: site.siteMetadata.siteUrl + '/' + edge.node.fields.slug,
})
})
},
query: `
{
allMdx(
limit: 1000,
filter: { frontmatter: { published: { ne: false } } }
sort: { order: DESC, fields: [frontmatter___date] }
) {
edges {
node {
excerpt(pruneLength: 250)
fields {
slug
date
}
frontmatter {
title
}
}
}
}
}
`,
output: '/rss.xml',
title: 'Blog RSS Feed',
},
],
},
},
{
resolve: `gatsby-plugin-typography`,
options: {
pathToConfigModule: `src/lib/typography`,
},
},
'gatsby-plugin-offline',
],
}