spaCy/website
Adriane Boyd 1ebe7db07c
Support local filesystem remotes for projects (#11762)
* Support local filesystem remotes for projects

* Fix support for local filesystem remotes for projects
  * Use `FluidPath` instead of `Pathy` to support both filesystem and
    remote paths
  * Create missing parent directories if required for local filesystem
  * Add a more general `_file_exists` method to support both `Pathy`,
    `Path`, and `smart_open`-compatible URLs
* Add explicit `smart_open` dependency starting with support for
  `compression` flag
* Update `pathy` dependency to exclude older versions that aren't
  compatible with required `smart_open` version
* Update docs to refer to `Pathy` instead of `smart_open` for project
  remotes (technically you can still push to any `smart_open`-compatible
  path but you can't pull from them)
* Add tests for local filesystem remotes

* Update pathy for general BlobStat sorting

* Add import

* Remove _file_exists since only Pathy remotes are supported

* Format CLI docs

* Clean up merge
2022-11-29 11:40:58 +01:00
..
docs Support local filesystem remotes for projects (#11762) 2022-11-29 11:40:58 +01:00
meta Add example sentence for Chinese in website meta (#11879) 2022-11-28 14:50:30 +09:00
setup Remove now-built-in jinja2>=3.1.0 extensions 2022-03-25 14:29:33 +01:00
src Add warning to install widget for M1 GPUs (#11666) 2022-10-27 15:08:24 +02:00
.eslintrc
.prettierrc
Dockerfile Docker Image for Website Dev (#10098) 2022-01-20 23:02:13 +01:00
README.md Update `README.md` 2022-11-27 03:47:11 +01:00
UNIVERSE.md Update UNIVERSE.md (#9941) 2021-12-27 13:46:04 +01:00
gatsby-browser.js
gatsby-config.js Fix icon [ci skip] 2021-01-30 18:27:55 +11:00
gatsby-node.js Remove docs references to starters for now (see #6262) [ci skip] 2020-10-16 15:46:34 +02:00
package-lock.json Update GitHub link [ci skip] 2021-02-02 14:27:46 +11:00
package.json Update GitHub link [ci skip] 2021-02-02 14:27:46 +11:00
runtime.txt

README.md

spacy.io website and docs

Netlify Status

The styleguide for the spaCy website is available at spacy.io/styleguide.

Setup and installation

Before running the setup, make sure your versions of Node and npm are up to date. Node v10.15 or later is required.

# Clone the repository
git clone https://github.com/explosion/spaCy
cd spaCy/website

# Install Gatsby's command-line tool
npm install --global gatsby-cli

# Install the dependencies
npm install

# Start the development server
npm run dev

If you are planning on making edits to the site, you should also set up the Prettier code formatter. It takes care of formatting Markdown and other files automatically. See here for the available extensions for your code editor. The .prettierrc file in the root defines the settings used in this codebase.

Building & developing the site with Docker

Sometimes it's hard to get a local environment working due to rapid updates to node dependencies, so it may be easier to use docker for building the docs.

If you'd like to do this, be sure you do not include your local node_modules folder, since there are some dependencies that need to be built for the image system. Rename it before using.

docker run -it \
  -v $(pwd):/spacy-io/website \
  -p 8000:8000 \
  ghcr.io/explosion/spacy-io \
  gatsby develop -H 0.0.0.0

This will allow you to access the built website at http://0.0.0.0:8000/ in your browser, and still edit code in your editor while having the site reflect those changes.

Note: If you're working on a Mac with an M1 processor, you might see segfault errors from qemu if you use the default image. To fix this use the arm64 tagged image in the docker run command (ghcr.io/explosion/spacy-io:arm64).

Building the Docker image

If you'd like to build the image locally, you can do so like this:

docker build -t spacy-io .

This will take some time, so if you want to use the prebuilt image you'll save a bit of time.

Project structure

├── docs                 # the actual markdown content
├── meta                 # JSON-formatted site metadata
|   ├── languages.json   # supported languages and statistical models
|   ├── sidebars.json    # sidebar navigations for different sections
|   ├── site.json        # general site metadata
|   ├── type-annotations.json # Type annotations
|   └── universe.json    # data for the spaCy universe section
├── public               # compiled site
├── setup                # Jinja setup
├── src                  # source
|   ├── components       # React components
|   ├── fonts            # webfonts
|   ├── images           # images used in the layout
|   ├── plugins          # custom plugins to transform Markdown
|   ├── styles           # CSS modules and global styles
|   ├── templates        # page layouts
|   |   ├── docs.js      # layout template for documentation pages
|   |   ├── index.js     # global layout template
|   |   ├── models.js    # layout template for model pages
|   |   └── universe.js  # layout templates for universe
|   └── widgets          # non-reusable components with content, e.g. changelog
├── .eslintrc.json       # ESLint config file
├── .prettierrc          # Prettier config file
├── gatsby-browser.js    # browser-specific hooks for Gatsby
├── gatsby-config.js     # Gatsby configuration
├── gatsby-node.js       # Node-specific hooks for Gatsby
└── package.json         # package settings and dependencies