| This website was created with [Docusaurus](https://docusaurus.io/). | |
| # Building the PyTorch3D website | |
| ## Install | |
| 1. Make sure all the dependencies for the website are installed: | |
| ```sh | |
| # Install dependencies | |
| $ yarn | |
| or | |
| $ npm install docusaurus-init | |
| ``` | |
| 2. Run your dev server: | |
| ```sh | |
| # Start the site | |
| $ yarn start | |
| or | |
| $ ./node_modules/docusaurus/lib/start-server.js | |
| ``` | |
| ## Build the tutorials | |
| We convert the ipython notebooks to html using `parse_tutorials.py` which is found in the scripts folder at the root of the PyTorch3D directory. | |
| Before running this script install the following dependencies: | |
| ``` | |
| pip install nbformat==4.4.0 nbconvert==5.3.1 ipywidgets==7.5.1 tornado==4.2 bs4 | |
| ``` | |
| Install yarn: | |
| ``` | |
| brew install yarn | |
| # or | |
| curl -o- -L https://yarnpkg.com/install.sh | bash | |
| ``` | |
| Then run the build script: | |
| ``` | |
| bash scripts/build_website.sh | |
| ``` | |
| This will build the docusaurus website and run a script to parse the tutorials and generate: | |
| - `.html` files in the `website/_tutorials` folder | |
| - `.js` files in the `website/pages/tutorials` folder | |
| - `.py`/`.ipynb` files in the `website/static/files` folder | |
| TODO: Add support for latex in markdown in jupyter notebooks and embedded images. | |
| ## Build and publish the website | |
| To update for a new version, you need to build the tutorials and the website and push to the gh-pages | |
| branch of `github.com/facebookresearch/pytorch3d`. The instructions in `scripts/publish_website.sh` | |
| bring it all together. | |
| ## Add a new tutorial | |
| The tutorials to include in the website are listed in `website/tutorials.json`. If you create a new tutorial add an entry to the list in this file. This is needed in order to generate the sidebar for the tutorials page. | |
| ## Edit the landing page | |
| To change the content of the landing page modify: `website/pages/en/index.js`. | |
| ## Edit the tutorials page | |
| To change the content of the tutorials home page modify: `website/pages/tutorials/index.js`. | |
| --------------------------------------------------------- | |
| ## Docusaurus docs | |
| - [Get Started in 5 Minutes](#get-started-in-5-minutes) | |
| - [Directory Structure](#directory-structure) | |
| - [Editing Content](#editing-content) | |
| - [Adding Content](#adding-content) | |
| - [Full Documentation](#full-documentation) | |
| ## Directory Structure | |
| Your project file structure should look something like this | |
| ``` | |
| my-docusaurus/ | |
| docs/ | |
| doc-1.md | |
| doc-2.md | |
| doc-3.md | |
| website/ | |
| blog/ | |
| 2016-3-11-oldest-post.md | |
| 2017-10-24-newest-post.md | |
| core/ | |
| node_modules/ | |
| pages/ | |
| static/ | |
| css/ | |
| img/ | |
| package.json | |
| sidebars.json | |
| siteConfig.js | |
| ``` | |
| # Editing Content | |
| ## Editing an existing docs page | |
| Edit docs by navigating to `docs/` and editing the corresponding document: | |
| `docs/doc-to-be-edited.md` | |
| ```markdown | |
| --- | |
| id: page-needs-edit | |
| title: This Doc Needs To Be Edited | |
| --- | |
| Edit me... | |
| ``` | |
| For more information about docs, click [here](https://docusaurus.io/docs/en/navigation) | |
| ## Editing an existing blog post | |
| Edit blog posts by navigating to `website/blog` and editing the corresponding post: | |
| `website/blog/post-to-be-edited.md` | |
| ```markdown | |
| --- | |
| id: post-needs-edit | |
| title: This Blog Post Needs To Be Edited | |
| --- | |
| Edit me... | |
| ``` | |
| For more information about blog posts, click [here](https://docusaurus.io/docs/en/adding-blog) | |
| # Adding Content | |
| ## Adding a new docs page to an existing sidebar | |
| 1. Create the doc as a new markdown file in `/docs`, example `docs/newly-created-doc.md`: | |
| ```md | |
| --- | |
| id: newly-created-doc | |
| title: This Doc Needs To Be Edited | |
| --- | |
| My new content here.. | |
| ``` | |
| 1. Refer to that doc's ID in an existing sidebar in `website/sidebars.json`: | |
| ```javascript | |
| // Add newly-created-doc to the Getting Started category of docs | |
| { | |
| "docs": { | |
| "Getting Started": [ | |
| "quick-start", | |
| "newly-created-doc" // new doc here | |
| ], | |
| ... | |
| }, | |
| ... | |
| } | |
| ``` | |
| For more information about adding new docs, click [here](https://docusaurus.io/docs/en/navigation) | |
| ## Adding a new blog post | |
| 1. Make sure there is a header link to your blog in `website/siteConfig.js`: | |
| `website/siteConfig.js` | |
| ```javascript | |
| headerLinks: [ | |
| ... | |
| { blog: true, label: 'Blog' }, | |
| ... | |
| ] | |
| ``` | |
| 2. Create the blog post with the format `YYYY-MM-DD-My-Blog-Post-Title.md` in `website/blog`: | |
| `website/blog/2018-05-21-New-Blog-Post.md` | |
| ```markdown | |
| --- | |
| author: Frank Li | |
| authorURL: https://twitter.com/foobarbaz | |
| authorFBID: 503283835 | |
| title: New Blog Post | |
| --- | |
| Lorem Ipsum... | |
| ``` | |
| For more information about blog posts, click [here](https://docusaurus.io/docs/en/adding-blog) | |
| ## Adding items to your site's top navigation bar | |
| 1. Add links to docs, custom pages or external links by editing the headerLinks field of `website/siteConfig.js`: | |
| `website/siteConfig.js` | |
| ```javascript | |
| { | |
| headerLinks: [ | |
| ... | |
| /* you can add docs */ | |
| { doc: 'my-examples', label: 'Examples' }, | |
| /* you can add custom pages */ | |
| { page: 'help', label: 'Help' }, | |
| /* you can add external links */ | |
| { href: 'https://github.com/facebook/docusaurus', label: 'GitHub' }, | |
| ... | |
| ], | |
| ... | |
| } | |
| ``` | |
| For more information about the navigation bar, click [here](https://docusaurus.io/docs/en/navigation) | |
| ## Adding custom pages | |
| 1. Docusaurus uses React components to build pages. The components are saved as .js files in `website/pages/en`: | |
| 1. If you want your page to show up in your navigation header, you will need to update `website/siteConfig.js` to add to the `headerLinks` element: | |
| `website/siteConfig.js` | |
| ```javascript | |
| { | |
| headerLinks: [ | |
| ... | |
| { page: 'my-new-custom-page', label: 'My New Custom Page' }, | |
| ... | |
| ], | |
| ... | |
| } | |
| ``` | |
| For more information about custom pages, click [here](https://docusaurus.io/docs/en/custom-pages). | |
| # Full Documentation | |
| Full documentation can be found on the [website](https://docusaurus.io/). | |