Skip to content
compodocx

Angular · Open source · Node 22+

Static Angular docs. Every release.

compodocx is a static Angular documentation generator. Point it at your TypeScript source for a site that's standalone, signal-aware, themable.
Multi-version output, runnable StackBlitz playgrounds, CI diffs, LLM-context export — all included.

All from one CLI.

npm install -D @cngxjs/compodocx
See it in action

Features

Built for modern Angular projects

Angular Support

Standalone-first

Components, directives, and pipes get first-class pages with imports, providers, and member tables. NgModule still works — we just treat it as the legacy path.

Standalone reference

Angular Support

Signals, properly rendered

signal(), computed(), and linkedSignal() render as first-class members with their derived dependencies. Effects opt in via JSDoc tag.

Signals deep dive

Theming

Eight themes, or your own

Slate Noir, Ocean, Midnight, Nord, Rose Pine, Ember, Neon, Brutalist. Override any subset of --color-cdx-* tokens to ship your brand.

Theming guide

Build & CI

Side-by-side versions

Docs for every release on one domain. Labels auto-detected from package.json. The version-switcher widget ships built in.

Multi-version setup

Tooling

Migrate & diff sub-CLIs

compodocx migrate rewrites your old Handlebars templates as JS partials. compodocx diff fails CI when your public API changes.

CLI reference

Tooling

LLM-ready export

Export your API as flat markdown or typed JSON. Drop it into Claude, Copilot, your code-review bot — or any downstream pipeline.

Export options

Output

What your users actually see

A static site where every standalone component, directive, and pipe gets a dedicated page. Deep links, full-text search, and a sticky source viewer included.

Every standalone component, directive, and pipe gets its own page with imports, providers, and member cards.

Coverage

Catch the undocumented bits before merge

Per-symbol coverage rolls up into a sortable report. Documented vs. not, broken down by kind. Set --coverageMinimum and your build fails below threshold.

  • Deep-linked symbol list. Click any undocumented item to jump straight into source.
  • Breakdown by kind. Components, directives, pipes, classes, interfaces — each tracked separately.
  • --publicApiOnly filter. Scope to your exported allow-list so internal helpers don’t tank the percentage.

Versioning

Every release. One domain. Zero config.

Each release writes into its own folder under a shared root. A versions.json manifest drives the version-switcher in the topbar. Append-only, semver-sorted, no server-side config.

  • Auto-detected label. Read from the nearest package.json, or override with --versionLabel.
  • Append-only manifest. Deduplicated by label — past links never break when a new release ships.
  • Runtime switcher. Reads the manifest in the browser — works on GitHub Pages, S3, intranets, even file://.

Playground

One-click runnable demos. Powered by StackBlitz

Add a @playground JSDoc block to any component and compodocx ships a Playground tab on the rendered page with one launch button per block. Clicking opens a fresh StackBlitz (opens in new tab) project, assembled at build time from your component sources. No iframe overlay, no library publication required.

The StackBlitz SDK is lazy-loaded on first click as a separate ~7 KB chunk, so static doc pages stay light. @internal exports never leak into the public project.

Read the playground guide
  • Click-to-launch

    StackBlitz opens in a fresh tab, not an embedded iframe.

  • Build-time assembled

    Sources travel inline. No npm publish required to share a demo.

  • Lazy SDK loading

    ~7 KB chunk fetched on first click. Doc pages stay fast.

From compodoc

Already on compodoc? Stay calm.

Keep most of your existing setup. The CLI surface is the same, the internals are new. Most teams ship the migration in a single PR.

Read MIGRATION.md (opens in new tab)
  • CLI alias works

    Your existing compodoc scripts run unchanged. The binary registers both names.

  • JS template overrides

    Custom templates are JS partials returning HTML. No Handlebars, no helpers registry. Just module.exports = (data, h) => '...'.

  • migrate sub-CLI

    Ports Handlebars templates and CSS automatically. Inspect first, convert files or whole folders. You'll still want to review the diff.

Setup

From zero to docs in 60 seconds

One command to install. One to run. The third is optional but recommended once your team is onboard.

  1. Install

    Add it to your dev dependencies.
    Works in any Angular library or app from Angular 17 upwards.

    bash
    npm install -D @cngxjs/compodocx
  2. Run

    Point at your tsconfig. Static docs land in ./documentation/<versionLabel>/.
    Label auto-detected from package.json.

    bash
    npx compodocx -p tsconfig.doc.json
  3. Configure

    Or commit a JSON config so everyone on the team runs the same flags. Pin the theme.

    json
    {
      "tsconfig": "tsconfig.doc.json",
      "output": "documentation",
      "theme": "ocean"
    }

Themes

Click a card. The whole site flips.

Eight themes ship with compodocx. Try them live: your pick persists across pages. Want your own? Override any subset of --color-cdx-* tokens in a single CSS file.

FAQ

Common questions

Quick answers to the questions that come up before adoption. Still stuck? Open an issue on GitHub.