gatsby-config.js
const config = require("./data/SiteConfig")
const pathPrefix = config.pathPrefix === "/" ? "" : config.pathPrefix
module.exports = {
pathPrefix: config.pathPrefix,
siteMetadata: {
siteUrl: config.siteUrl + pathPrefix,
rssMetadata: {
site_url: config.siteUrl + pathPrefix,
feed_url: config.siteUrl + pathPrefix + config.siteRss,
title: config.siteTitle,
description: config.siteDescription,
image_url: `${config.siteUrl + pathPrefix}/logos/logo.png`,
author: config.userName,
copyright: config.copyright
}
},
plugins: [
"gatsby-plugin-react-helmet",
{
resolve: "gatsby-source-filesystem",
options: {
name: "posts",
path: `${__dirname}/content/${config.blogPostDir}`
}
},
{
resolve: "gatsby-transformer-remark",
options: {
plugins: [
{
resolve: "gatsby-remark-embed-youtube",
options: {
width: 845,
height: 445
}
},
{
resolve: "gatsby-remark-images",
options: {
maxWidth: 845
}
},
{
resolve: "gatsby-remark-embed-gist",
options: {
username: "cbillowes",
includeDefaultCss: true
}
},
{
resolve: "gatsby-remark-prismjs",
classPrefix: "language-",
inlineCodeMarker: "±",
aliases: {}
},
{
resolve: "gatsby-remark-responsive-iframe"
},
"gatsby-remark-prismjs",
"gatsby-remark-copy-linked-files",
"gatsby-remark-autolink-headers"
]
}
},
{
resolve: "gatsby-plugin-google-analytics",
options: {
trackingId: config.googleAnalyticsID
}
},
{
resolve: "gatsby-plugin-nprogress",
options: {
color: config.themeColor
}
},
"gatsby-plugin-sharp",
"gatsby-plugin-catch-links",
"gatsby-plugin-twitter",
"gatsby-plugin-sitemap",
{
resolve: "gatsby-plugin-manifest",
options: {
name: config.siteTitle,
short_name: config.siteTitle,
description: config.siteDescription,
start_url: config.pathPrefix,
background_color: config.backgroundColor,
theme_color: config.themeColor,
display: "minimal-ui",
icons: [
{
src: "/logos/logo.png",
sizes: "114x114",
type: "image/png"
}
]
}
},
"gatsby-plugin-offline",
{
resolve: "gatsby-plugin-feed",
options: {
setup(ref) {
const ret = ref.query.site.siteMetadata.rssMetadata
ret.allMarkdownRemark = ref.query.allMarkdownRemark
ret.generator = "GatsbyJS Material Starter"
return ret
},
query: `
{
site {
siteMetadata {
rssMetadata {
site_url
feed_url
title
description
image_url
author
copyright
}
}
}
}
`,
feeds: [
{
serialize(ctx) {
const rssMetadata = ctx.query.site.siteMetadata.rssMetadata
return ctx.query.allMarkdownRemark.edges.map(edge => ({
categories: edge.node.frontmatter.tags,
date: edge.node.frontmatter.date,
title: edge.node.frontmatter.title,
description: edge.node.excerpt,
author: rssMetadata.author,
url: rssMetadata.site_url + edge.node.fields.slug,
guid: rssMetadata.site_url + edge.node.fields.slug
}))
},
query: `
{
allMarkdownRemark(
limit: 10,
sort: { order: DESC, fields: [frontmatter___date] },
) {
edges {
node {
excerpt
fields { slug }
frontmatter {
title
cover
date
category
tags
}
}
}
}
}
`,
output: config.siteRss
}
]
}
}
]
}