@clean-jsdoc-theme/typedoc
v5.0.3
Published
TypeDoc support for clean-jsdoc-theme (renders via setu → dwar)
Maintainers
Readme
The TypeDoc plugin for clean-jsdoc-theme — the same fast, modern,
LLM-friendly documentation site, generated from your TypeScript sources.
A TypeDoc plugin that feeds TypeDoc's reflections through the same pipeline as
the JSDoc theme, so a TypeScript project gets identical output: server-rendered
HTML, lazily-hydrated interactive islands, fuzzy + full-text search, light and
dark themes, and a companion .md of every page for LLMs.
[!IMPORTANT] 🧪 Developer preview — not a finished product yet. This plugin already generates the full site for a single language, but it's an early preview and still has rough edges. Try it on real projects, and please tell us where it falls short.
This is where you come in. A preview gets good fastest with community input — issues, reproductions, and pull requests are all genuinely welcome. See Developer preview & contributing below.
Highlights
- Same site as the JSDoc theme — one rendering core, so JSDoc and TypeDoc projects produce identical output.
- Fast & framework-free — server-rendered pages with lazily-hydrated Preact islands; each page loads only the JS it actually uses.
- Search built in — a fuzzy command palette (
Ctrl K) over titles, descriptions, content, and per-member deep links, plus an optional Pagefind full-text index. - Guides + API in one site — hand-written Markdown guides and the auto-generated reference share one sidebar and one search.
- Localization on the way — the shared
clean-jsdoci18n tooling powers multi-language sites with a language switcher and per-language fonts. The full per-locale build ships for JSDoc today; TypeDoc build support is in progress (string extraction already works). - LLM-friendly — every page ships a clean companion
.md, plus a copy-page button to hand any page to Claude / ChatGPT / Perplexity. A downloadable skill turns any coding assistant into a setup expert. - Polished by default — light/dark OKLCH themes, Google Fonts, shiki syntax
highlighting, a Monaco source viewer, and
Source: file:linelinks.
Quick start
npm install --save-dev typedoc @clean-jsdoc-theme/typedoctypedoc is a peer dependency — you bring your own. Load the plugin and select
its output in typedoc.json; theme options live under cleanJsdocTheme:
{
"entryPoints": ["src/index.ts"],
"plugin": ["@clean-jsdoc-theme/typedoc"],
"outputs": [{ "name": "clean-jsdoc-theme", "path": "dist" }],
"cleanJsdocTheme": {
"siteName": "My Library"
}
}Build, then serve over HTTP (Pagefind needs HTTP to load its index):
npx typedoc
npx serve distDocumentation
- Setup & full reference — ankdev.me/clean-jsdoc-theme/theme/typedoc-getting-started: installation, the
cleanJsdocThemeoptions, and theming. Every theme option works the same as JSDoc'sopts, nested undercleanJsdocTheme. - FAQ & recipes — ankdev.me/clean-jsdoc-theme/guides/faq: how to embed CodePen / YouTube / sites, write rich doc comments (callouts, steps), and common config tweaks.
- Live demo — ankdev.me/clean-jsdoc-theme/api-docs: a real generated API reference, so you can see the output before installing.
Developer preview & contributing 🤝
@clean-jsdoc-theme/typedoc is a developer preview — we're shipping it early
to learn what TypeScript projects actually need, not presenting it as the final
word. So your feedback shapes it directly, and contributors are welcome:
- 🐛 Hit a bug or odd output? Open an issue with a small reproduction — that's the single most useful thing you can do.
- 💡 Missing something or have an idea? Feature requests and questions are welcome in the issue tracker.
- 🛠️ Want to dig in? PRs are genuinely welcome. The adapter lives in
packages/typedoc/(itsNOTES.mdrecords the verified TypeDoc API facts it relies on). Friendly areas to start: type rendering, reflection edge cases, and the localized build. See CONTRIBUTING.md.
No contribution is too small — a typo fix, a repro, or a docs tweak all help. Verified against TypeDoc 0.28.x. Thanks for helping make the TypeScript story as solid as the JSDoc one. ❤️
