The main API for generating documentation from source files. This is the primary entry point for both command-line and programmatic usage.
function createDoc(options: ApiDocOptions): boolean | ApiDocResult;Generates API documentation from source files based on the provided options.
Parameters:
options (ApiDocOptions): Configuration object for documentation generationReturns:
true: When there are no source files to processfalse: When an error occurs during generationApiDocResult: Object containing the generated documentation datainterface ApiDocOptions {
src: string | string[];
dest: string;
template?: string;
config?: string;
verbose?: boolean;
debug?: boolean;
silent?: boolean;
single?: boolean;
dryRun?: boolean;
apiprivate?: boolean;
markdown?: boolean | string;
encoding?: string;
lineEnding?: string;
includeFilters?: string[];
excludeFilters?: string[];
filters?: Record<string, string>;
languages?: Record<string, string>;
parsers?: Record<string, string>;
workers?: Record<string, string>;
copyDefinitions?: boolean;
filterBy?: string;
logFormat?: 'simple' | 'json';
warnError?: boolean;
writeJson?: boolean;
}Option Details:
src: Input source directories or files (required)dest: Output directory for generated documentation (required)template: Path to custom template directoryconfig: Path to configuration file (JSON or JavaScript)verbose: Enable verbose logging outputdebug: Enable debug mode with detailed loggingsilent: Suppress all output except errorssingle: Generate single-file HTML output instead of multi-filedryRun: Parse files but don't write any outputapiprivate: Include APIs marked with @apiPrivatemarkdown: Enable/disable markdown parser or path to custom parserencoding: File encoding (default: 'utf8')lineEnding: Line ending format ('LF', 'CR', 'CRLF')includeFilters: RegEx patterns for files to includeexcludeFilters: RegEx patterns for files to excludefilters: Custom filter pluginslanguages: Custom language parsersparsers: Custom API parsersworkers: Custom worker pluginscopyDefinitions: Copy definitions instead of inliningfilterBy: Filter documentation by taglogFormat: Output format for logs ('simple' or 'json')warnError: Treat warnings as errorswriteJson: Generate api-data.json fileinterface ApiDocResult {
data: string;
project: string;
}data: JSON string containing parsed API dataproject: JSON string containing project informationconst { createDoc } = require('apidoc');
const result = createDoc({
src: ['./src', './lib'],
dest: './documentation'
});
if (result === false) {
console.error('Documentation generation failed');
process.exit(1);
} else if (result === true) {
console.log('No files to process');
} else {
console.log('Documentation generated successfully');
}const { createDoc } = require('apidoc');
const result = createDoc({
src: ['./src'],
dest: './docs',
template: './custom-template',
config: './apidoc.json',
verbose: true,
debug: false,
single: false,
apiprivate: false,
markdown: true,
encoding: 'utf8',
includeFilters: ['.*\\.(js|ts)$'],
excludeFilters: ['node_modules', 'test'],
writeJson: true,
warnError: true
});const { createDoc } = require('apidoc');
// Parse files but don't generate output
const result = createDoc({
src: ['./src'],
dest: './docs',
dryRun: true,
verbose: true
});
if (result !== false) {
console.log('Source files parsed successfully');
}const { createDoc } = require('apidoc');
const result = createDoc({
src: ['./src'],
dest: './docs/api.html',
single: true,
template: './template'
});The function returns false when errors occur. Common error scenarios:
{
"scripts": {
"docs": "apidoc -i src/ -o docs/",
"docs:watch": "apidoc -i src/ -o docs/ --watch",
"docs:single": "apidoc -i src/ -o docs/api.html --single"
}
}const { createDoc } = require('apidoc');
function buildDocs() {
console.log('Building API documentation...');
const result = createDoc({
src: ['./src'],
dest: './build/docs',
verbose: process.env.NODE_ENV === 'development'
});
if (result === false) {
throw new Error('Documentation build failed');
}
console.log('API documentation built successfully');
return result;
}
module.exports = { buildDocs };