QuartoDocBuilder.jl
QuartoDocBuilder.jl
QuartoDocBuilder.jl generates a documentation website for a Julia package by building a Quarto project from your docstrings, README.md, NEWS.md and a set of hand-written .qmd pages. It is inspired by R’s pkgdown and serves the same role as Documenter.jl, while letting you reuse everything Quarto already provides: GitHub Pages deployment, themes, dark mode, search and reader comments.
This site is built with QuartoDocBuilder itself — see docs/make.jl for the configuration that produced it.
Features
- Reference pages generated from Julia docstrings, organized into named groups.
- Multiple navbar sections with dropdowns (tutorials, how-to guides, explanation, …).
- Changelog page generated from
NEWS.md, with GitHub issue/PR linking. - Light/dark mode with automatic Bootswatch theme pairing.
- Automatic cross-reference autolinking: backticked
functionmentions become links. - Strict mode that validates internal links and fails the build on broken ones.
- Inventory-based cross-package links via Sphinx
objects.inv(the format Documenter publishes). - Every built site ships its own
objects.invso other packages can link back to yours. - Submodule documentation with collision-safe page names.
- Multi-version documentation with a version selector dropdown.
- GitHub Actions workflow generation for automated deployment.
- Giscus comments and custom theming (colors, fonts, CSS/SCSS).
Installation
using Pkg
Pkg.activate("docs") # a dedicated docs environment
Pkg.add("QuartoDocBuilder")You will also need the Quarto CLI installed to render the generated project.
Quick start
Create docs/make.jl:
using MyPackage
using QuartoDocBuilder
config = QuartoConfig(
module_name = MyPackage,
repo = "user/MyPackage.jl",
reference = [
ReferenceGroup(title = "Core", contents = [:main_func, :helper_func]),
ReferenceGroup(title = "Utilities", contents = [starts_with("util_")]),
],
sections = [
SectionConfig(title = "Tutorials", dir = "tutorials", order = 1),
SectionConfig(title = "How-to Guides", dir = "how-to", order = 2),
],
strict = true, # fail the build on broken internal links
)
quarto_build_site(config)Then build and preview:
julia --project=docs docs/make.jl # writes the Quarto project under docs/
cd docs && quarto preview # or: quarto renderDocumentation
Full documentation, tutorials and how-to guides are at https://vituri.github.io/QuartoDocBuilder.jl/.