mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-11-04 01:48:04 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			201 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			201 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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')
 | 
						|
 | 
						|
const domain = process.env.BRANCH || site.domain
 | 
						|
const siteUrl = `https://${domain}`
 | 
						|
const isNightly = site.nightlyBranches.includes(domain)
 | 
						|
const isLegacy = site.legacy || !!+process.env.SPACY_LEGACY
 | 
						|
const favicon = `src/images/icon${isNightly ? '_nightly' : isLegacy ? '_legacy' : ''}.png`
 | 
						|
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}`,
 | 
						|
    GITHUB_PROJECTS: `https://github.com/${site.projectsRepo}`,
 | 
						|
    SPACY_PKG_NAME: isNightly ? 'spacy-nightly' : 'spacy',
 | 
						|
    SPACY_PKG_FLAGS: isNightly ? ' --pre' : '',
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Compute the overall total counts of models and languages
 | 
						|
 */
 | 
						|
function getCounts(langs = []) {
 | 
						|
    return {
 | 
						|
        langs: langs.length,
 | 
						|
        modelLangs: langs.filter(({ models }) => models && !!models.length).length,
 | 
						|
        models: langs.map(({ models }) => (models ? models.length : 0)).reduce((a, b) => a + b, 0),
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
module.exports = {
 | 
						|
    siteMetadata: {
 | 
						|
        ...site,
 | 
						|
        sidebars,
 | 
						|
        ...models,
 | 
						|
        counts: getCounts(models.languages),
 | 
						|
        universe,
 | 
						|
        nightly: isNightly,
 | 
						|
        legacy: isLegacy,
 | 
						|
        binderBranch: domain,
 | 
						|
        siteUrl,
 | 
						|
    },
 | 
						|
 | 
						|
    plugins: [
 | 
						|
        {
 | 
						|
            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-plugin-react-svg',
 | 
						|
            options: {
 | 
						|
                rule: {
 | 
						|
                    include: /src\/images\/(.*)\.svg/,
 | 
						|
                },
 | 
						|
            },
 | 
						|
        },
 | 
						|
        {
 | 
						|
            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`,
 | 
						|
                    },
 | 
						|
                    {
 | 
						|
                        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,
 | 
						|
            },
 | 
						|
        },
 | 
						|
        {
 | 
						|
            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: ['/'] },
 | 
						|
                            { userAgent: 'Twitterbot', allow: '/' },
 | 
						|
                        ],
 | 
						|
                    },
 | 
						|
                },
 | 
						|
            },
 | 
						|
        },
 | 
						|
        `gatsby-plugin-offline`,
 | 
						|
    ],
 | 
						|
}
 |