spaCy/website/gatsby-config.js

200 lines
6.5 KiB
JavaScript
Raw Normal View History

const autoprefixer = require('autoprefixer')
const path = require('path')
// https://florian.ec/blog/gatsby-build-netlify-segmentation-fault/
const sharp = require('sharp')
sharp.cache(false)
sharp.simd(false)
// Markdown plugins
const wrapSectionPlugin = require('./src/plugins/remark-wrap-section.js')
const customAttrsPlugin = require('./src/plugins/remark-custom-attrs.js')
const codeBlocksPlugin = require('./src/plugins/remark-code-blocks.js')
// Import metadata
const site = require('./meta/site.json')
const sidebars = require('./meta/sidebars.json')
const models = require('./meta/languages.json')
const universe = require('./meta/universe.json')
const DEFAULT_TEMPLATE = path.resolve('./src/templates/index.js')
2020-07-01 12:05:11 +00:00
2020-07-01 12:42:59 +00:00
const isNightly = !!+process.env.SPACY_NIGHTLY || site.nightlyBranches.includes(process.env.BRANCH)
const favicon = isNightly ? `src/images/icon_nightly.png` : `src/images/icon.png`
const binderBranch = isNightly ? 'nightly' : site.binderBranch
2020-07-01 12:42:59 +00:00
const siteUrl = isNightly ? site.siteUrlNightly : site.siteUrl
2020-07-18 22:02:29 +00:00
const domain = isNightly ? site.domainNightly : site.domain
2020-09-12 15:05:10 +00:00
const branch = isNightly ? 'develop' : 'master'
// Those variables are going to be replaced in the Markdown, e.g. %%GITHUB_SPACY
const replacements = {
GITHUB_SPACY: `https://github.com/explosion/spaCy/tree/${branch}`,
2020-09-24 08:13:41 +00:00
GITHUB_PROJECTS: `https://github.com/${site.projectsRepo}`,
2020-09-12 15:05:10 +00:00
}
2020-09-13 09:31:50 +00:00
/**
* Compute the overall total counts of models and languages
*/
function getCounts(langs = []) {
return {
langs: langs.length,
modelLangs: langs.filter(({ models }) => models && !!models.length).length,
starterLangs: langs.filter(({ starters }) => starters && !!starters.length).length,
models: langs.map(({ models }) => (models ? models.length : 0)).reduce((a, b) => a + b, 0),
starters: langs
.map(({ starters }) => (starters ? starters.length : 0))
.reduce((a, b) => a + b, 0),
}
}
module.exports = {
siteMetadata: {
...site,
sidebars,
...models,
2020-09-13 09:31:50 +00:00
counts: getCounts(models.languages),
universe,
2020-07-01 12:05:11 +00:00
nightly: isNightly,
binderBranch,
2020-07-01 12:42:59 +00:00
siteUrl,
},
plugins: [
{
resolve: `gatsby-plugin-svgr`,
options: {
svgo: false,
svgoConfig: {
removeViewBox: false,
},
},
},
{
resolve: `gatsby-plugin-sass`,
options: {
indentedSyntax: true,
postCssPlugins: [autoprefixer()],
cssLoaderOptions: {
localIdentName:
process.env.NODE_ENV == 'development'
? '[name]-[local]-[hash:8]'
: '[hash:8]',
},
},
},
`gatsby-plugin-react-helmet`,
{
resolve: `gatsby-source-filesystem`,
options: {
name: `docs`,
path: `${__dirname}/docs`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
name: `pages`,
path: `${__dirname}/src/pages`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
name: `images`,
path: `${__dirname}/src/images`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
name: `docsImages`,
path: `${__dirname}/docs/images`,
},
},
{
resolve: `gatsby-mdx`,
options: {
root: __dirname,
extensions: ['.md', '.mdx'],
defaultLayouts: {
pages: DEFAULT_TEMPLATE,
},
mdPlugins: [customAttrsPlugin, wrapSectionPlugin, codeBlocksPlugin],
gatsbyRemarkPlugins: [
{
resolve: `gatsby-remark-smartypants`,
options: {
backticks: false,
dashes: 'oldschool',
},
},
{
resolve: `gatsby-remark-images`,
options: {
maxWidth: 650,
linkImagesToOriginal: true,
sizeByPixelDensity: false,
showCaptions: true,
quality: 80,
withWebp: { quality: 80 },
wrapperStyle: { marginBottom: '20px' },
},
},
{
// NB: This need to run after gatsby-remark-images!
resolve: `gatsby-remark-unwrap-images`,
},
{
resolve: `gatsby-remark-copy-linked-files`,
},
2020-09-12 15:05:10 +00:00
{
resolve: 'gatsby-remark-find-replace',
options: {
replacements,
prefix: '%%',
},
},
],
},
},
`gatsby-transformer-sharp`,
`gatsby-plugin-sharp`,
`gatsby-plugin-catch-links`,
`gatsby-plugin-sitemap`,
{
resolve: `gatsby-plugin-manifest`,
options: {
name: site.title,
short_name: site.title,
start_url: `/`,
background_color: site.theme,
theme_color: site.theme,
display: `minimal-ui`,
icon: favicon,
},
},
2020-07-18 22:02:29 +00:00
{
resolve: `gatsby-plugin-plausible`,
options: { domain },
},
{
resolve: 'gatsby-plugin-robots-txt',
options: {
host: siteUrl,
sitemap: `${siteUrl}/sitemap.xml`,
// If we're in a special state (nightly, legacy) prevent indexing
resolveEnv: () => (isNightly ? 'development' : 'production'),
env: {
production: {
policy: [{ userAgent: '*', allow: '/' }],
},
development: {
policy: [{ userAgent: '*', disallow: ['/'] }],
},
},
},
},
`gatsby-plugin-offline`,
],
}