KevinK.dev.js/gatsby-config.js

241 lines
8.2 KiB
JavaScript

/* eslint-disable no-undef */
const extConfig = require("./config");
const dynamicPlugins = [];
if (extConfig.modules.blog) {
dynamicPlugins.push({
resolve: `gatsby-plugin-feed`,
options: {
query: `
{
site {
siteMetadata {
title
description
siteUrl
site_url: siteUrl
}
}
}
`,
feeds: [
{
serialize: ({ query: { site, blog } }) => {
return blog.nodes.map((node) => {
if (!node.childMdx) return null;
return {
title: node.childMdx.frontmatter.title,
description: node.childMdx.excerpt,
date: node.childMdx.frontmatter.date,
url:
site.siteMetadata.siteUrl +
`/${
node.childMdx.frontmatter.language
}/blog/${
node.childMdx.frontmatter.section
? node.childMdx.frontmatter
.section + "/"
: ""
}${node.childMdx.frontmatter.published}/${
node.childMdx.frontmatter.url
}`,
guid:
site.siteMetadata.siteUrl +
`/${
node.childMdx.frontmatter.language
}/blog/${
node.childMdx.frontmatter.section
? node.childMdx.frontmatter
.section + "/"
: ""
}${node.childMdx.frontmatter.published}/${
node.childMdx.frontmatter.url
}`,
category: node.childMdx.frontmatter.section,
};
});
},
query: `
{
blog: allFile(
filter: { sourceInstanceName: { eq: "blogContent" } }
) {
nodes {
childMdx {
id
body
excerpt
frontmatter {
platform
tags
title
url
section
language
published(formatString: "YYYY/MM")
date: published
}
}
}
}
}
`,
output: "/blog/feed.rss",
title: extConfig.siteName + " Blog",
},
],
},
});
}
module.exports = {
siteMetadata: {
title: extConfig.siteName,
author: extConfig.siteAuthor,
siteUrl: extConfig.siteURL,
modules: extConfig.modules,
keywords: extConfig.siteKeywords,
payPalMail: extConfig.payPalMail,
contactEmail: extConfig.contactEmail,
contactPhone: extConfig.contactPhone,
mapsLink: extConfig.mapsLink,
address: extConfig.address,
contactTwitter: extConfig.contactTwitter,
contactGitHub: extConfig.contactGitHub,
contactMastodon: extConfig.contactMastodon,
contactMastodonHref: extConfig.contactMastodonHref,
givenName: extConfig.givenName,
familyName: extConfig.familyName,
birthDate: extConfig.birthDate,
gender: extConfig.gender,
height: extConfig.height,
nationality: extConfig.nationality,
personImage: extConfig.personImage,
sameAs: extConfig.sameAs,
},
plugins: [
`gatsby-plugin-eslint`,
`gatsby-plugin-image`,
`gatsby-plugin-sharp`,
`gatsby-transformer-sharp`,
`gatsby-transformer-json`,
{
resolve: `gatsby-plugin-portal`,
options: {
key: "osnav",
id: "osnav",
},
},
{
resolve: `gatsby-plugin-remote-images`,
options: {
nodeType: "SocialsJson",
imagePath: "image",
},
},
{
resolve: `gatsby-plugin-remote-images`,
options: {
nodeType: "FriendsJson",
imagePath: "imageURL",
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/content/textblocks`,
name: `textblocks`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/content/projectTextblocks`,
name: `projectTextblocks`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/content/blog`,
name: `blogContent`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/content/career`,
name: `careerContent`,
},
},
"gatsby-plugin-mdx",
{
resolve: `gatsby-source-filesystem`,
options: {
path: `./content/`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/locales`,
name: `locale`,
},
},
`gatsby-plugin-sass`,
{
resolve: `gatsby-plugin-manifest`,
options: {
name: extConfig.siteName,
short_name: extConfig.siteName,
start_url: `/`,
background_color: `#000710`,
theme_color: `#e52b3e`,
display: `minimal-ui`,
icon: extConfig.iconPath, // This path is relative to the root of the site.
cache_busting_mode: "none",
},
},
`gatsby-plugin-robots-txt`,
`gatsby-plugin-sitemap`,
`gatsby-plugin-react-helmet`,
{
resolve: `gatsby-plugin-react-i18next`,
options: {
localeJsonSourceName: `locale`,
languages: extConfig.languages,
defaultLanguage: `en`,
generateDefaultLanguagePage: true,
siteUrl: extConfig.siteURL,
i18nextOptions: {
interpolation: {
escapeValue: false, // not needed for react as it escapes by default
},
keySeparator: ".",
nsSeparator: ":",
},
pages: [
{
matchPath: "/:lang/projects/:urlname",
getLanguageFromPath: true,
excludeLanguages: extConfig.languages,
},
{
matchPath: "/:lang/blog/:urlname*",
getLanguageFromPath: true,
excludeLanguages: extConfig.languages,
},
],
},
},
{
resolve: `gatsby-plugin-netlify`,
options: {
generateMatchPathRewrites: false,
},
},
...dynamicPlugins,
],
};