Update docs and add support for legacy style

This commit is contained in:
Ines Montani 2021-01-30 17:43:12 +11:00
parent 1ed7029d47
commit d3350afe45
19 changed files with 79 additions and 38 deletions

View File

@ -2,9 +2,9 @@ redirects = [
# Netlify
{from = "https://spacy.netlify.com/*", to="https://spacy.io/:splat", force = true },
# Subdomain for branches
{from = "https://nightly.spacy.io/*", to="https://nightly-spacy-io.spacy.io/:splat", force = true, status = 200},
{from = "https://nightly.spacy.io/*", to="https://spacy.io/:splat", force = true},
# TODO: update this with the v2 branch build once v3 is live (status = 200)
{from = "https://v2.spacy.io/*", to="https://spacy.io/:splat", force = true},
{from = "https://v2.spacy.io/*", to="https://v2-spacy-io.spacy.io/:splat", force = true, status = 200},
# Old subdomains
{from = "https://survey.spacy.io/*", to = "https://spacy.io", force = true},
{from = "http://survey.spacy.io/*", to = "https://spacy.io", force = true},

View File

@ -19,11 +19,11 @@ const universe = require('./meta/universe.json')
const DEFAULT_TEMPLATE = path.resolve('./src/templates/index.js')
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
const siteUrl = isNightly ? site.siteUrlNightly : site.siteUrl
const domain = isNightly ? site.domainNightly : site.domain
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
@ -53,7 +53,8 @@ module.exports = {
counts: getCounts(models.languages),
universe,
nightly: isNightly,
binderBranch,
legacy: isLegacy,
binderBranch: domain,
siteUrl,
},

View File

@ -2,11 +2,9 @@
"title": "spaCy",
"description": "spaCy is a free open-source library for Natural Language Processing in Python. It features NER, POS tagging, dependency parsing, word vectors and more.",
"slogan": "Industrial-strength Natural Language Processing in Python",
"siteUrl": "https://spacy.io",
"domain": "spacy.io",
"siteUrlNightly": "https://nightly.spacy.io",
"domainNightly": "nightly.spacy.io",
"nightlyBranches": ["nightly.spacy.io"],
"legacy": false,
"email": "contact@explosion.ai",
"company": "Explosion",
"companyUrl": "https://explosion.ai",

View File

@ -57,6 +57,7 @@
"build": "npm run python:install && npm run python:setup && gatsby build",
"dev": "npm run python:setup && gatsby develop",
"dev:nightly": "BRANCH=nightly.spacy.io npm run dev",
"dev:legacy": "SPACY_LEGACY=1 npm run dev",
"lint": "eslint **",
"clear": "rm -rf .cache",
"test": "echo \"Write tests! -> https://gatsby.app/unit-testing\"",

View File

@ -1,10 +1,12 @@
import React from 'react'
import classNames from 'classnames'
import pattern from '../images/pattern_blue.jpg'
import patternDefault from '../images/pattern_blue.jpg'
import patternNightly from '../images/pattern_nightly.jpg'
import patternOverlay from '../images/pattern_landing.jpg'
import patternOverlayNightly from '../images/pattern_landing_nightly.jpg'
import patternLegacy from '../images/pattern_legacy.jpg'
import overlayDefault from '../images/pattern_landing.jpg'
import overlayNightly from '../images/pattern_landing_nightly.jpg'
import overlayLegacy from '../images/pattern_landing_legacy.jpg'
import Grid from './grid'
import { Content } from './main'
@ -14,9 +16,15 @@ import { H1, H2, H3 } from './typography'
import Link from './link'
import classes from '../styles/landing.module.sass'
export const LandingHeader = ({ nightly, style = {}, children }) => {
const overlay = nightly ? patternOverlayNightly : patternOverlay
const wrapperStyle = { backgroundImage: `url(${nightly ? patternNightly : pattern})` }
function getPattern(nightly, legacy) {
if (nightly) return { pattern: patternNightly, overlay: overlayNightly }
if (legacy) return { pattern: patternLegacy, overlay: overlayLegacy }
return { pattern: patternDefault, overlay: overlayDefault }
}
export const LandingHeader = ({ nightly, legacy, style = {}, children }) => {
const { pattern, overlay } = getPattern(nightly, legacy)
const wrapperStyle = { backgroundImage: `url(${pattern})` }
const contentStyle = { backgroundImage: `url(${overlay})`, ...style }
return (
<header className={classes.header}>

View File

@ -6,6 +6,7 @@ import patternBlue from '../images/pattern_blue.jpg'
import patternGreen from '../images/pattern_green.jpg'
import patternPurple from '../images/pattern_purple.jpg'
import patternNightly from '../images/pattern_nightly.jpg'
import patternLegacy from '../images/pattern_legacy.jpg'
import classes from '../styles/main.module.sass'
const patterns = {
@ -13,6 +14,7 @@ const patterns = {
green: patternGreen,
purple: patternPurple,
nightly: patternNightly,
legacy: patternLegacy,
}
export const Content = ({ Component = 'div', className, children }) => (

View File

@ -7,10 +7,12 @@ import socialImageDefault from '../images/social_default.jpg'
import socialImageApi from '../images/social_api.jpg'
import socialImageUniverse from '../images/social_universe.jpg'
import socialImageNightly from '../images/social_nightly.jpg'
import socialImageLegacy from '../images/social_legacy.jpg'
function getPageTitle(title, sitename, slogan, sectionTitle, nightly) {
function getPageTitle(title, sitename, slogan, sectionTitle, nightly, legacy) {
if (sectionTitle && title) {
return `${title} · ${sitename} ${sectionTitle}${nightly ? ' (nightly)' : ''}`
const suffix = nightly ? ' (nightly)' : legacy ? ' (legacy)' : ''
return `${title} · ${sitename} ${sectionTitle}${suffix}`
}
if (title) {
return `${title} · ${sitename}`
@ -18,8 +20,9 @@ function getPageTitle(title, sitename, slogan, sectionTitle, nightly) {
return `${sitename} · ${slogan}`
}
function getImage(section, nightly) {
function getImage(section, nightly, legacy) {
if (nightly) return socialImageNightly
if (legacy) return socialImageLegacy
if (section === 'api') return socialImageApi
if (section === 'universe') return socialImageUniverse
return socialImageDefault
@ -33,6 +36,7 @@ export default function SEO({
sectionTitle,
bodyClass,
nightly,
legacy,
}) {
return (
<StaticQuery
@ -45,9 +49,10 @@ export default function SEO({
siteMetadata.title,
siteMetadata.slogan,
sectionTitle,
nightly
nightly,
legacy
)
const socialImage = siteMetadata.siteUrl + getImage(section, nightly)
const socialImage = siteMetadata.siteUrl + getImage(section, nightly, legacy)
const meta = [
{
name: 'description',

View File

@ -6,8 +6,8 @@ import siteMetadata from '../../meta/site.json'
const htmlToReactParser = new HtmlToReactParser()
// TODO: update this
const DEFAULT_BRANCH = 'develop'
const isNightly = siteMetadata.nightlyBranches.includes(siteMetadata.domain)
export const DEFAULT_BRANCH = isNightly ? 'develop' : 'master'
export const repo = siteMetadata.repo
export const modelsRepo = siteMetadata.modelsRepo
export const projectsRepo = siteMetadata.projectsRepo

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

View File

@ -7,11 +7,11 @@ import { LandingHeader, LandingTitle } from '../components/landing'
import Button from '../components/button'
export default ({ data, location }) => {
const { nightly } = data.site.siteMetadata
const { nightly, legacy } = data.site.siteMetadata
const pageContext = { title: '404 Error', searchExclude: true, isIndex: false }
return (
<Template data={data} pageContext={pageContext} location={location}>
<LandingHeader style={{ minHeight: 400 }} nightly={nightly}>
<LandingHeader style={{ minHeight: 400 }} nightly={nightly} legacy={legacy}>
<LandingTitle>
Ooops, this page
<br />
@ -31,6 +31,7 @@ export const pageQuery = graphql`
site {
siteMetadata {
nightly
legacy
title
description
navigation {

View File

@ -54,6 +54,11 @@
--color-theme-nightly-light: hsla(257, 99%, 67%, 0.06)
--color-theme-nightly-opaque: hsla(257, 99%, 67%, 0.11)
--color-theme-legacy: #6f6f6f
--color-theme-legacy-dark: hsl(257, 0%, 35%)
--color-theme-legacy-light: hsla(257, 0%, 67%, 0.06)
--color-theme-legacy-opaque: hsla(257, 0%, 67%, 0.11)
// Regular colors
--color-back: hsl(0, 0%, 100%)
--color-front: hsl(213, 15%, 12%)
@ -118,6 +123,12 @@
--color-theme-light: var(--color-theme-nightly-light)
--color-theme-opaque: var(--color-theme-nightly-opaque)
.theme-legacy
--color-theme: var(--color-theme-legacy)
--color-theme-dark: var(--color-theme-legacy-dark)
--color-theme-light: var(--color-theme-legacy-light)
--color-theme-opaque: var(--color-theme-legacy-opaque)
/* Fonts */

View File

@ -32,7 +32,7 @@ const Docs = ({ pageContext, children }) => (
version,
apiDetails,
} = pageContext
const { sidebars = [], modelsRepo, languages, nightly } = site.siteMetadata
const { sidebars = [], modelsRepo, languages, nightly, legacy } = site.siteMetadata
const isModels = section === 'models'
const sidebar = pageContext.sidebar
? { items: pageContext.sidebar }
@ -74,7 +74,7 @@ const Docs = ({ pageContext, children }) => (
{sidebar && <Sidebar items={sidebar.items} pageMenu={pageMenu} slug={slug} />}
<Main
section={section}
theme={nightly ? 'nightly' : theme}
theme={nightly ? 'nightly' : legacy ? 'legacy' : theme}
sidebar
asides
wrapContent
@ -138,6 +138,7 @@ const query = graphql`
models
}
nightly
legacy
sidebars {
section
items {

View File

@ -82,7 +82,7 @@ const scopeComponents = {
IntegrationLogo,
}
const AlertSpace = ({ nightly }) => {
const AlertSpace = ({ nightly, legacy }) => {
const isOnline = useOnlineStatus()
return (
<>
@ -99,6 +99,16 @@ const AlertSpace = ({ nightly }) => {
, not the latest <Link to="https://spacy.io">stable version</Link>.
</Alert>
)}
{legacy && (
<Alert
title="You're viewing the old documentation"
icon="warning"
closeOnClick={false}
>
The page reflects an older version of spaCy, not the latest{' '}
<Link to="https://spacy.io">stable release</Link>.
</Alert>
)}
{!isOnline && (
<Alert title="Looks like you're offline." icon="offline" variant="warning">
But don't worry, your visited pages should be saved for you.
@ -158,7 +168,7 @@ class Layout extends React.Component {
const mdx = file ? file.childMdx : null
const meta = site.siteMetadata || {}
const { title, section, sectionTitle, teaser, theme = 'blue', searchExclude } = pageContext
const uiTheme = meta.nightly ? 'nightly' : theme
const uiTheme = meta.nightly ? 'nightly' : meta.legacy ? 'legacy' : theme
const bodyClass = classNames(`theme-${uiTheme}`, { 'search-exclude': !!searchExclude })
const isDocs = ['usage', 'models', 'api', 'styleguide'].includes(section)
const content = !mdx ? null : (
@ -177,13 +187,13 @@ class Layout extends React.Component {
bodyClass={bodyClass}
nightly={meta.nightly}
/>
<AlertSpace nightly={meta.nightly} />
<AlertSpace nightly={meta.nightly} legacy={meta.legacy} />
<Navigation
title={meta.title}
items={meta.navigation}
section={section}
search={<Search settings={meta.docSearch} />}
alert={navAlert}
alert={meta.nightly ? null : navAlert}
>
<Progress key={location.href} />
</Navigation>
@ -214,6 +224,7 @@ export const pageQuery = graphql`
site {
siteMetadata {
nightly
legacy
title
description
navigation {

View File

@ -302,8 +302,8 @@ const Universe = ({ pageContext, location, mdxComponents }) => (
<StaticQuery
query={query}
render={data => {
const { universe, nightly } = data.site.siteMetadata
const theme = nightly ? 'nightly' : pageContext.theme
const { universe, nightly, legacy } = data.site.siteMetadata
const theme = nightly ? 'nightly' : legacy ? 'legacy' : pageContext.theme
return (
<UniverseContent
content={universe.resources}
@ -325,6 +325,7 @@ const query = graphql`
site {
siteMetadata {
nightly
legacy
universe {
resources {
type

View File

@ -56,11 +56,11 @@ for entity in doc.ents:
}
const Landing = ({ data }) => {
const { nightly } = data
const { nightly, legacy } = data
const codeExample = getCodeExample(nightly)
return (
<>
<LandingHeader nightly={data.nightly}>
<LandingHeader nightly={nightly} legacy={legacy}>
<LandingTitle>
Industrial-Strength
<br />
@ -274,6 +274,7 @@ const landingQuery = graphql`
site {
siteMetadata {
nightly
legacy
repo
}
}

View File

@ -2,7 +2,7 @@ import React, { useState } from 'react'
import { StaticQuery, graphql } from 'gatsby'
import { Quickstart, QS } from '../components/quickstart'
import { repo } from '../components/util'
import { repo, DEFAULT_BRANCH } from '../components/util'
const DEFAULT_MODELS = ['en']
const DEFAULT_OPT = 'efficiency'
@ -166,7 +166,7 @@ const QuickstartInstall = ({ id, title }) => {
</QS>
<QS package="source">
git clone https://github.com/{repo}
{nightly ? ` --branch develop` : ''}
{nightly ? ` --branch ${DEFAULT_BRANCH}` : ''}
</QS>
<QS package="source">cd spaCy</QS>
<QS package="source" os="linux">