UNPKG

@draftbox-co/gatsby-ghost-novela-theme

Version:

A Gatsby theme plugin for creating blogs from headless Ghost CMS.

204 lines (198 loc) 5.51 kB
/* eslint-disable */ const siteConfigDefaults = require(`./src/utils/siteConfig`); const ghostConfigDefaults = require(`./src/utils/.ghost.json`); const generateRSSFeed = require(`./src/utils/rss/generate-feed`); const path = require("path"); module.exports = (themeOptions) => { const siteConfig = themeOptions.siteConfig || siteConfigDefaults; const ghostConfig = themeOptions.ghostConfig || ghostConfigDefaults; const finalConfig = process.env.NODE_ENV === `development` ? ghostConfig.development : ghostConfig.production; siteConfig.apiUrl = finalConfig.apiUrl; const configOptions = { pathPrefix: "", siteMetadata: siteConfig, plugins: [ `gatsby-plugin-typescript`, `gatsby-image`, `gatsby-plugin-react-helmet`, `gatsby-plugin-sharp`, `gatsby-transformer-sharp`, `gatsby-plugin-mdx`, `gatsby-plugin-catch-links`, `gatsby-plugin-force-trailing-slashes`, { resolve: `gatsby-source-filesystem`, options: { path: path.join(__dirname, `src`, `images`), name: `images`, }, }, { resolve: `gatsby-plugin-emotion`, options: { displayName: process.env.NODE_ENV === `development`, }, }, { resolve: `gatsby-source-ghost`, options: process.env.NODE_ENV === `development` ? ghostConfig.development : ghostConfig.production, }, { resolve: require.resolve(`./plugins/gatsby-plugin-ghost-manifest`), options: { short_name: siteConfig.shortTitle, start_url: `/`, background_color: siteConfig.backgroundColor, theme_color: siteConfig.themeColor, display: `minimal-ui`, icon: `static/${siteConfig.siteIcon}`, legacy: true, query: `{ site { siteMetadata { siteTitle siteDescription } } }`, }, }, { resolve: `@draftbox-co/gatsby-plugin-amp`, options: { canonicalBaseUrl: siteConfig.siteUrl, components: [`amp-form`], excludedPaths: [`/404*`, `/`, `/offline*`], pathIdentifier: `amp/`, relAmpHtmlPattern: `{{canonicalBaseUrl}}{{pathname}}{{pathIdentifier}}`, useAmpClientIdApi: true, dirName: __dirname, themePath: `src/amp-styles/post.amp.css`, }, }, { resolve: `gatsby-plugin-feed`, options: { query: `{ allGhostSettings { edges { node { title description } } } }`, feeds: [generateRSSFeed(siteConfig)], }, }, { resolve: `gatsby-plugin-advanced-sitemap`, options: { query: `{ allGhostPost { edges { node { id slug updated_at created_at feature_image } } } allGhostPage { edges { node { id slug updated_at created_at feature_image } } } allGhostTag { edges { node { id slug feature_image } } } allGhostAuthor { edges { node { id slug profile_image } } } } `, mapping: { allGhostPost: { sitemap: `posts`, }, allGhostTag: { sitemap: `tags`, }, allGhostAuthor: { sitemap: `authors`, }, allGhostPage: { sitemap: `pages`, }, }, exclude: [ `/dev-404-page`, `/404`, `/404.html`, `/offline-plugin-app-shell-fallback`, "/offline", "/offline.html", ], createLinkInHead: true, addUncaughtPages: true, }, }, `gatsby-plugin-theme-ui`, { resolve: `gatsby-plugin-remove-generator`, options: { content: `Draftbox`, }, }, { resolve: `@draftbox-co/gatsby-plugin-css-variables`, options: { variables: siteConfig.themeConfig.variables, }, }, ], }; if (siteConfig.themeConfig.fonts && siteConfig.themeConfig.fonts.length > 0) { configOptions.plugins.push({ resolve: `@draftbox-co/gatsby-plugin-webfonts`, options: { fonts: { google: siteConfig.themeConfig.fonts, }, formats: ["woff2", "woff"], useMinify: true, usePreload: true, usePreconnect: true, blacklist: ["/amp"], }, }) } return configOptions; };