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 referenceAngular · Open source · Node 22+
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 Features
Angular Support
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 referenceAngular Support
signal(), computed(), and linkedSignal() render as first-class members with their derived dependencies. Effects opt in via JSDoc tag.
Theming
Slate Noir, Ocean, Midnight, Nord, Rose Pine, Ember, Neon, Brutalist. Override any subset of --color-cdx-* tokens to ship your brand.
Build & CI
Docs for every release on one domain. Labels auto-detected from package.json. The version-switcher widget ships built in.
Tooling
compodocx migrate rewrites your old Handlebars templates as JS partials. compodocx diff fails CI when your public API changes.
Tooling
Export your API as flat markdown or typed JSON. Drop it into Claude, Copilot, your code-review bot — or any downstream pipeline.
Export optionsOutput
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.
Coverage
Per-symbol coverage rolls up into a sortable report. Documented vs. not, broken down by
kind. Set
--coverageMinimum and your build fails below threshold.
--publicApiOnly filter.
Scope to your exported allow-list so internal helpers don’t tank the percentage.
Versioning
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.
package.json, or override with
--versionLabel.
file://.
Playground
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.
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
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.
Your existing compodoc scripts run unchanged. The binary registers
both names.
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
One command to install. One to run. The third is optional but recommended once your team is onboard.
Add it to your dev dependencies.
Works in any Angular library or app from Angular 17 upwards.
npm install -D @cngxjs/compodocx Point at your tsconfig. Static docs land in ./documentation/<versionLabel>/.
Label auto-detected from package.json.
npx compodocx -p tsconfig.doc.json Or commit a JSON config so everyone on the team runs the same flags. Pin the theme.
{
"tsconfig": "tsconfig.doc.json",
"output": "documentation",
"theme": "ocean"
} Themes
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
Quick answers to the questions that come up before adoption. Still stuck? Open an issue on GitHub.
compodoc CLI alias still works, and compodocx migrate ports Handlebars overrides to JS partials automatically.signal(), computed(), and linkedSignal() members render as first-class fields with derived-state dependencies.NgModule scaffolding needed.package.json, writes a versions.json manifest, and ships a runtime version-switcher widget.--color-cdx-* CSS custom properties in a single CSS file passed via --theme.compodocx diff compares two JSON snapshots and exits non-zero on breaking changes.--exportFormat json emits a typed schema with a stable schemaVersion.--coverageMinimum gates merges on documentation completeness.@playground JSDoc block to a component and compodocx renders a Playground tab with one launch button per block.