A Vuepress-powered documentation generator for Nimbus' Nim libraries, configurable for anything else
https://libs.nimbus.team
4a917a51e0 | ||
---|---|---|
docgen | ||
.gitignore | ||
LICENSE-APACHEv2 | ||
LICENSE-MIT | ||
README.md |
README.md
Nimbus Docs Suite
This a documentation generator for Nimbus Libraries at nimbus-libs.status.im. It's made to auto-regenerate from master on all the repos you want documented but at the same time supports custom content and theming. It uses Vuepress behind the scenes.
Dependencies
You need:
- a fairly recent version of NodeJS (Windows Version)
- yarn
- vuepress globally installed
Building
git clone https://github.com/status-im/nimbus-docs-suite
cd nimbus-docs-suite
cd docgen && yarn install
vuepress build
The results of the build process will be in .vuepress/dist
.
What's behind the build command
When you run vuepress build
, the builder:
- reads
config.json
for the repos it should process. - uses the information there to build the homepage by constructing library cards for each repo.
- for every repo with
update: true
, grabs theirREADME
file and strips their header and footer (aboveIntroduction
and belowContributing
). - changes image URLs to match raw ones from Github.
- generates frontmatter from the data in
config.json
, combines it with the README and generates a homepage for each library that way. - if a
Guides
folder exists in library's subfolder, it will generate a sidebar navigation from its contents.
The logic responsible for this is in a custom plugin in .vuepress/docgen
.
Modifying for your use case
To generate docs in the same way for your own repos:
- Modify
config.json
to contain the repos you want processname
: slug, URL-friendly name of the project and will be the folder name where the lib's docs are storedlabel
: human readable label and title to be placed at the top of the homepagelocation
: the Github URL of the repo. Must be public. Gitlab and private repos coming soon.update
: when false, only generates content from local MD content, does not try to fetch from online mastertags
: a JS array of tags applying to this lib. Purely aesthetic for now, for the homepage - colored badges will appear next to the lib's name. Add tags into thetags
object as desired.description
: description for the homepagefrontmatter
: frontmatter to generate. Key value pairs. Values are same as documented in Vuepress.
- Also in
config.json
, set up the start and end separators. This indicates where your README's body begins, and where it ends. Useful for avoiding licensing information or CI badges in your human-readable docs.separators[0]
is the starting point of the readme's body,separators[1]
is the ending point of the readme's body, andseparators[2]
lets you specify several separators for start and end if your READMEs across projects aren't standardized. The string of each separator will be exploded withseparators[2]
and the first of those which is found in a README is considered the valid separator. - Modify styles in
.vuepress/styles
and theme configuration in.vuepress/config.js
as desired. Use the Vuepress docs. - Run
vuepress build
insidedocgen
.
Enhancing the docs further
To further enhance the docs, please consult the Vuepress docs as underneath it's all just a Vue app built by Vuepress.
License
Licensed and distributed under either of
- MIT license: LICENSE-MIT or http://opensource.org/licenses/MIT
or
- Apache License, Version 2.0, (LICENSE-APACHEv2 or http://www.apache.org/licenses/LICENSE-2.0)
at your option. These files may not be copied, modified, or distributed except according to those terms.