QuartoDocBuilder

Notedocblock
QuartoDocBuilder

A Julia package for building documentation websites using Quarto, inspired by R’s pkgdown package and Documenter.jl.

Features

  • Generate documentation from Julia docstrings
  • Organized reference pages with grouping
  • Multiple navbar sections with dropdowns
  • Articles/vignettes support
  • Changelog generation from NEWS.md
  • GitHub Actions integration
  • Customizable themes and navigation
  • Optional default styles (applied when no theme is specified)
  • Multi-version documentation with version selector dropdown
  • Edit on GitHub links for easy contributions
  • Auto-documentation of all module symbols (autodocs_group)
  • Missing docstring detection (check_missing_docstrings)
  • External cross-references to other packages’ documentation
  • Link checking for broken URLs
  • Submodule documentation (include_submodules) with collision-safe page names
  • Automatic objects.inv emission for cross-package linking

Quick Start

using MyPackage
using QuartoDocBuilder

# Simple usage (uses default styles)
config = QuartoConfig(
    module_name = MyPackage,
    repo = "user/MyPackage.jl"
)
quarto_build_site(config)

# With Quarto theme (default styles NOT applied)
config = QuartoConfig(
    module_name = MyPackage,
    repo = "user/MyPackage.jl",
    theme = ThemeConfig(bootswatch="flatly", dark_mode=true)
)
quarto_build_site(config)

# With multiple sections
config = QuartoConfig(
    module_name = MyPackage,
    repo = "user/MyPackage.jl",
    reference = [
        ReferenceGroup(title="Core", contents=[:main_func]),
        ReferenceGroup(title="Utils", contents=[starts_with("util_")])
    ],
    sections = [
        SectionConfig(title="Tutorials", dir="tutorials", order=1),
        SectionConfig(title="Explanation", dir="explanation", order=2),
        SectionConfig(title="How-to Guides", dir="how-to", order=3)
    ]
)
quarto_build_site(config)

# With versioned documentation (like DataFrames.jl)
config = QuartoConfig(
    module_name = MyPackage,
    repo = "user/MyPackage.jl",
    version = VersionConfig(
        enabled = true,
        dev_branch = "main",
        keep_versions = 5
    )
)
quarto_build_site(config)

# Then generate the versioned GitHub Actions workflow:
quarto_github_action_versioned()