@nodejs/doc-kit. Generators transform API documentation through a pipeline, taking input from previous generators and yielding output for consumption.
Generator Structure
A generator consists of several files organized in a directory:Creating a Basic Generator
Define TypeScript Types
Create a Type parameters:
types.d.ts file with a Generator export:- First parameter: Custom configuration object
- Second parameter:
generatefunction signature - Third parameter: Optional
processChunkfunction signature
Define Generator Metadata
Create Key fields:
index.mjs with generator metadata using createLazyGenerator:name- Unique identifier for the generatorversion- Semantic versiondescription- Human-readable descriptiondependsOn- Name of the generator this depends on (orundefinedfor raw files)defaultConfiguration- Default configuration values
Implement Generator Logic
Create Function signature:
generate.mjs with the main generation function:input- Output from the dependency generatorworker- Worker instance for parallel processing- Returns: Generated output (can be async generator for streaming)
Function Signatures
generate Function
Thegenerate function is the main entry point for your generator.
Non-streaming version:
processChunk Function
For parallel processing support, implementprocessChunk:
fullInput- Complete input arrayitemIndices- Indices of items to process in this chunkdeps- Serializable dependencies (config, constants, etc.)
Generator Dependencies
Declaring Dependencies
Specify which generator your generator depends on:undefined- No dependency (processes raw files)'ast'- Depends on MDAST output'metadata'- Depends on metadata output'jsx-ast'- Depends on JSX AST output
Dependency Chain Example
File Output
Writing Single File
Writing Multiple Files
Copying Assets
Streaming Results
When to Stream
Use streaming when:- Processing many independent items
- Items can be processed incrementally
- You want to reduce memory usage
- Downstream generators can start early
- You need all data to make decisions (code splitting, global analysis)
- Output format requires complete dataset
- Cross-references need resolution
Streaming Implementation
Non-Streaming Implementation
Configuration
Accessing Configuration
UsegetConfig() to access configuration:
Configuration Hierarchy
Configuration is resolved in this order:- CLI arguments
- Configuration file
- Generator
defaultConfiguration - Global defaults
Common Patterns
Processing metadata entries
Processing metadata entries
Filtering by API type
Filtering by API type
Grouping by module
Grouping by module
Next Steps
Parallel Processing
Optimize with worker threads
Built-in Generators
Study existing generators