TypeDoc Integration
Ardo includes built-in TypeDoc integration that allows you to automatically generate API documentation from your TypeScript source code.
Quick Start
1. Configure TypeDoc
Add the typedoc configuration to your vite.config.ts:
import { defineConfig } from "vite"
import { ardo } from "ardo/vite"
export default defineConfig({
plugins: [
ardo({
title: "My Library",
typedoc: {
enabled: true,
entryPoints: ["../src/index.ts"],
tsconfig: "../tsconfig.json",
out: "api",
},
}),
],
})The TypeDoc plugin is automatically included when typedoc config is provided.
2. Run the Build
The API documentation will be automatically generated when you build your site:
pnpm buildConfiguration Options
entryPoints
- Type:
string[] - Required: Yes
The entry points for TypeDoc to process. These are typically your library's main export files.
typedoc: {
entryPoints: ['./src/index.ts', './src/utils/index.ts'],
}tsconfig
- Type:
string
Path to your tsconfig.json file.
typedoc: {
tsconfig: './tsconfig.json',
}out
- Type:
string - Default:
'api'
Output directory for generated markdown files (relative to srcDir).
typedoc: {
out: 'reference/api',
}Filtering Options
Control what gets documented:
typedoc: {
excludeExternals: true, // Exclude external modules
excludePrivate: true, // Exclude private members
excludeProtected: false, // Include protected members
excludeInternal: true, // Exclude @internal members
exclude: ['**/*.test.ts'], // Exclude patterns
}Sorting
Control the order of documented members:
typedoc: {
sort: ['source-order'],
// Or: ['alphabetical', 'required-first', 'visibility']
}Sidebar Configuration
Customize how the API docs appear in the sidebar:
typedoc: {
sidebar: {
title: 'API Reference',
position: 100,
collapsed: false,
},
}Markdown Options
Control the generated markdown:
typedoc: {
markdown: {
breadcrumbs: true,
hierarchy: true,
sourceLinks: true,
sourceBaseUrl: 'https://github.com/user/repo/blob/main',
codeBlocks: true,
},
}Source Links
To enable links to your source code on GitHub, configure the sourceBaseUrl:
typedoc: {
markdown: {
sourceLinks: true,
sourceBaseUrl: 'https://github.com/your-username/your-repo/blob/main',
},
}Watch Mode
Enable watch mode for development to regenerate docs when source files change:
typedoc: {
watch: true,
}Generated Output
TypeDoc generates markdown files that include:
- Module/Namespace pages - Overview of exports
- Class pages - Properties, methods, constructors
- Interface pages - Properties with types
- Type alias pages - Type definitions
- Function pages - Signatures, parameters, return types
- Enum pages - Member values
Example Output
For a function like:
/**
* Greets a user by name.
*
* @param name - The name of the user
* @returns A greeting message
*
* @example
* ```ts
* greet('World') // 'Hello, World!'
* ```
*/
export function greet(name: string): string {
return `Hello, ${name}!`
}TypeDoc generates:
# Function: greet
Greets a user by name.
## Signature
function greet(name: string): string
### Parameters
| Name | Type | Description |
| ---- | -------- | -------------------- |
| name | `string` | The name of the user |
### Returns
`string`
A greeting message
## Examples
greet('World') // 'Hello, World!'Full Example
Here's a complete configuration example:
import { defineConfig } from "vite"
import { ardo } from "ardo/vite"
export default defineConfig({
plugins: [
ardo({
title: "My Library Docs",
description: "Documentation for my awesome library",
typedoc: {
enabled: true,
entryPoints: ["../packages/my-lib/src/index.ts"],
tsconfig: "../packages/my-lib/tsconfig.json",
out: "api",
excludePrivate: true,
excludeInternal: true,
sort: ["source-order"],
sidebar: {
title: "API Reference",
position: 50,
},
markdown: {
breadcrumbs: true,
hierarchy: true,
sourceLinks: true,
sourceBaseUrl: "https://github.com/my-org/my-lib/blob/main/packages/my-lib",
},
},
themeConfig: {
sidebar: [
{
text: "Guide",
items: [{ text: "Introduction", link: "/guide/intro" }],
},
{
text: "API Reference",
link: "/api",
},
],
},
}),
],
})Programmatic Usage
You can also use the TypeDoc generator programmatically:
import { generateApiDocs } from "ardo/typedoc"
const docs = await generateApiDocs(
{
enabled: true,
entryPoints: ["./src/index.ts"],
tsconfig: "./tsconfig.json",
},
"./docs/content"
)
console.log(`Generated ${docs.length} documentation pages`)