pmndrs/docs
Documentation generator for `pmndrs/*` projects.
A static MDX documentation generator, with a GitHub reusable workflow. It is primarily used for some pmndrs/* projects, but will work for anyone.

Those projects are known to be using this generator.
INSTALL
$ git clone https://github.com/pmndrs/docs.git
$ cd docs
$ npm ci
Configuration
| var | description | example | 
|---|---|---|
| MDX* | Path to *.mdxfolderNB: can be relative or absolute | docsor~/code/myproject/documentation | 
| NEXT_PUBLIC_LIBNAME* | Library name | React Three Fiber | 
| NEXT_PUBLIC_LIBNAME_SHORT | Library short name | r3f | 
| NEXT_PUBLIC_LIBNAME_DOTSUFFIX_LABEL | Text for the ".docs" suffix link inside the header | docs | 
| NEXT_PUBLIC_LIBNAME_DOTSUFFIX_HREF | Href for the ".docs" suffix link inside the header | https://docs.pmnd.rs | 
| BASE_PATH | Base path for the final URL | /react-three-fiber | 
| DIST_DIR | Path to the output folder (within project) | outordocs/out/react-three-fiber | 
| OUTPUT | Set to exportfor static output | export | 
| HOME_REDIRECT | Where the home should redirect | /getting-started/introduction | 
| MDX_BASEURL | Base URL for inlining relative images | http://localhost:60141orhttps://github.com/pmndrs/react-three-fiber/raw/master/docs | 
| SOURCECODE_BASEURL | Base URL for sourcecode:code path | https://github.com/pmndrs/react-three-fiber/tree/main | 
| EDIT_BASEURL | Base URL for displaying "Edit this page" URLs | https://github.com/pmndrs/react-three-fiber/edit/master/docs | 
| NEXT_PUBLIC_URL | Final URL of the published website | https://pmndrs.github.io/react-three-fiber | 
| ICON | Emoji or image to use as (fav)icon (path local to MDX) | 🇨🇭or/icon.pngor/favicon.ico | 
| LOGO | Logo src/path (either FQURL or local to MDXpath) | /logo.pngorhttps://worldvectorlogo.com/r3f.png | 
| GITHUB | Github URL | https://github.com/pmndrs/react-three-fiber | 
| DISCORD | Discord URL | https://discord.com/channels/740090768164651008/740093168770613279 | 
| THEME_PRIMARY | Primary accent color | #323e48 | 
| THEME_SCHEME | Theme scheme | contentorexpressiveorfidelityormonochromeorneutralortonalSpotorvibrant | 
| THEME_CONTRAST | Theme contrast -- value between -1 and 1 | 0or-1or1or-.6 | 
| THEME_NOTE | "note" color | #1f6feb | 
| THEME_TIP | "tip" color | #238636 | 
| THEME_IMPORTANT | "important" color | #8957e5 | 
| THEME_WARNING | "warning" color | #d29922 | 
| THEME_CAUTION | "caution" color | #da3633 | 
| CONTRIBUTORS_PAT | GitHub token for contributors API (see: https://docs.github.com/en/rest/collaborators/collaborators?apiVersion=2022-11-28#list-repository-collaborators) | ghp_1234567890 | 
* Required
MDX_BASEURL
Given a advanced/introduction.mdx file in the MDX folder:

becomes (for a MDX_BASEURL=http://localhost:60141 value):

http://localhost:60141 being the MDX folder served.
When deployed on GitHub Pages, MDX_BASEURL will typically value something like https://github.com/pmndrs/uikit/raw/main/docs, thanks to build.yml rule.
THEME_*
We implement m3 design system, using Tailwind Material Colors.
- Material Color for more information
- We currently don't have secondary/tertiary colors (maybe some day).
dev
$ (
  trap 'kill -9 0' SIGINT
  export _PORT=60141
  export MDX=docs
  export NEXT_PUBLIC_LIBNAME="Poimandres"
  export NEXT_PUBLIC_LIBNAME_SHORT="pmndrs"
  export NEXT_PUBLIC_LIBNAME_DOTSUFFIX_LABEL="docs"
  export NEXT_PUBLIC_LIBNAME_DOTSUFFIX_HREF="https://docs.pmnd.rs"
  export BASE_PATH=
  export DIST_DIR=
  export OUTPUT=export
  export HOME_REDIRECT=
  export MDX_BASEURL=http://localhost:$_PORT
  export SOURCECODE_BASEURL="vscode://file$(pwd)"
  export EDIT_BASEURL="vscode://file$(pwd)/docs"
  export NEXT_PUBLIC_URL=
  export ICON=
  export LOGO=gutenberg.jpg
  export GITHUB=https://github.com/pmndrs/docs
  export DISCORD=https://discord.com/channels/740090768164651008/1264328004172255393
  export THEME_PRIMARY="#323e48"
  export THEME_SCHEME="tonalSpot"
  export THEME_CONTRAST="0"
  export THEME_NOTE="#1f6feb"
  export THEME_TIP="#238636"
  export THEME_IMPORTANT="#8957e5"
  export THEME_WARNING="#d29922"
  export THEME_CAUTION="#da3633"
  export CONTRIBUTORS_PAT=
  kill $(lsof -ti:"$_PORT")
  npx serve $MDX -p $_PORT --no-port-switching --no-clipboard &
  npm run dev &
  wait
)
Then go to: http://localhost:3000
If HOME_REDIRECT= empty, / will not redirect, and instead displays an index of libraries.
build
$ (
  trap 'kill -9 0' SIGINT
  rm -rf out
  export _PORT=60141
  export MDX=docs
  export NEXT_PUBLIC_LIBNAME="Poimandres"
  export NEXT_PUBLIC_LIBNAME_SHORT="pmndrs"
  export NEXT_PUBLIC_LIBNAME_DOTSUFFIX_LABEL="docs"
  export NEXT_PUBLIC_LIBNAME_DOTSUFFIX_HREF="https://docs.pmnd.rs"
  export BASE_PATH=
  export DIST_DIR=
  export OUTPUT=export
  export HOME_REDIRECT=/getting-started/introduction
  export MDX_BASEURL=http://localhost:$_PORT
  export SOURCECODE_BASEURL=
  export EDIT_BASEURL=
  export NEXT_PUBLIC_URL=
  export ICON=
  export LOGO=gutenberg.jpg
  export GITHUB=https://github.com/pmndrs/docs
  export DISCORD=https://discord.com/channels/740090768164651008/1264328004172255393
  export THEME_PRIMARY="#323e48"
  export THEME_SCHEME="tonalSpot"
  export THEME_CONTRAST="0"
  export THEME_NOTE="#1f6feb"
  export THEME_TIP="#238636"
  export THEME_IMPORTANT="#8957e5"
  export THEME_WARNING="#d29922"
  export THEME_CAUTION="#da3633"
  export CONTRIBUTORS_PAT=
  npm run build
  kill $(lsof -ti:"$_PORT")
  npx serve $MDX -p $_PORT --no-port-switching --no-clipboard &
  npx serve out &
  wait
)
Docker
$ docker build -t pmndrs-docs .
$ cd ~/code/pmndrs/react-three-fiber
$ (
  trap 'kill -9 0' SIGINT
  export _PORT=60141
  export MDX=docs
  export NEXT_PUBLIC_LIBNAME="React Three Fiber"
  export NEXT_PUBLIC_LIBNAME_SHORT="r3f"
  export NEXT_PUBLIC_LIBNAME_DOTSUFFIX_LABEL="docs"
  export NEXT_PUBLIC_LIBNAME_DOTSUFFIX_HREF="https://docs.pmnd.rs"
  export BASE_PATH=
  export OUTPUT=export
  export HOME_REDIRECT=/getting-started/introduction
  export MDX_BASEURL=http://localhost:$_PORT
  export SOURCECODE_BASEURL=
  export EDIT_BASEURL=
  export NEXT_PUBLIC_URL=
  export ICON=🇨🇭
  export LOGO=/logo.png
  export GITHUB=https://github.com/pmndrs/react-three-fiber
  export DISCORD=https://discord.com/channels/740090768164651008/740093168770613279
  export THEME_PRIMARY="#323e48"
  export THEME_SCHEME="tonalSpot"
  export THEME_CONTRAST="0"
  export THEME_NOTE="#1f6feb"
  export THEME_TIP="#238636"
  export THEME_IMPORTANT="#8957e5"
  export THEME_WARNING="#d29922"
  export THEME_CAUTION="#da3633"
  export CONTRIBUTORS_PAT=
  rm -rf "$MDX/out"
  docker run --rm --init -it \
    -v "./$MDX":/app/docs \
    -e MDX \
    -e NEXT_PUBLIC_LIBNAME \
    -e NEXT_PUBLIC_LIBNAME_SHORT \
    -e NEXT_PUBLIC_LIBNAME_DOTSUFFIX_LABEL \
    -e NEXT_PUBLIC_LIBNAME_DOTSUFFIX_HREF \
    -e BASE_PATH \
    -e DIST_DIR="$MDX/out$BASE_PATH" \
    -e OUTPUT \
    -e HOME_REDIRECT \
    -e MDX_BASEURL \
    -e SOURCECODE_BASEURL \
    -e EDIT_BASEURL \
    -e NEXT_PUBLIC_URL \
    -e ICON \
    -e LOGO \
    -e GITHUB \
    -e DISCORD \
    -e THEME_PRIMARY \
    -e THEME_SCHEME \
    -e THEME_CONTRAST \
    -e THEME_NOTE \
    -e THEME_TIP \
    -e THEME_IMPORTANT \
    -e THEME_WARNING \
    -e THEME_CAUTION \
    -e CONTRIBUTORS_PAT \
    pmndrs-docs npm run build
  kill $(lsof -ti:"$_PORT")
  npx serve $MDX -p $_PORT --no-port-switching --no-clipboard &
  npx -y serve "$MDX/out" &
  wait
)
Then go to: http://localhost:3000
