Overview
The configuration management system handles loading configuration from files, merging with CLI options and defaults, and transforming values for runtime use.
getDefaultConfig
Returns the default configuration with sensible defaults for all generators.
import { getDefaultConfig } from './utils/configuration/index.mjs' ;
const defaults = getDefaultConfig ();
Returns
Default configuration object containing: Global configuration with defaults:
version: Current Node.js version
minify: true
repository: ‘nodejs/node’
ref: ‘HEAD’
baseURL: ‘https://nodejs.org/docs ’
Number of CPU cores available
loadConfigFile
Loads a configuration file from a URL or file path.
import { loadConfigFile } from './utils/configuration/index.mjs' ;
const config = await loadConfigFile ( './doc-kit.config.mjs' );
Parameters
URL or file path to the configuration file. Returns empty object if not provided.
Returns
The imported configuration object, or an empty object if no path provided
createConfigFromCLIOptions
Converts CLI options into a configuration object.
import { createConfigFromCLIOptions } from './utils/configuration/index.mjs' ;
const config = createConfigFromCLIOptions ({
input: 'doc/api/*.md' ,
output: 'dist/' ,
target: [ 'json-simple' ],
threads: 4 ,
});
Parameters
Command-line options object Input file patterns (glob)
Items to process per worker thread
Target Node.js version (semver)
Git reference (e.g., ‘HEAD’, ‘v20.0.0’)
Type map JSON file URL or path
Returns
Configuration object structured for internal use
createRunConfiguration
Creates a complete run configuration by merging config file, user options, and defaults.
import { createRunConfiguration } from './utils/configuration/index.mjs' ;
const config = await createRunConfiguration ({
configFile: './doc-kit.config.mjs' ,
target: [ 'json-simple' ],
threads: 4 ,
});
Parameters
User-provided configuration options (same as createConfigFromCLIOptions)
Returns
Fully merged and transformed configuration ready for execution
Behavior
Loads configuration file if configFile option is provided
Merges in order: defaults → config file → CLI options
Transforms async values:
Coerces version string to SemVer object
Parses changelog URL to array of release entries
Parses index URL to array of documentation sections
Enforces constraints:
Minimum threads: 1
Minimum chunkSize: 1
Propagates global config to generator-specific configs
setConfig
Sets the global configuration and returns the processed configuration.
import { setConfig } from './utils/configuration/index.mjs' ;
const config = await setConfig ({
input: 'doc/api/*.md' ,
output: 'dist/' ,
target: [ 'metadata' , 'json-simple' ],
threads: 4 ,
});
Parameters
options
Configuration | CLIOptions
required
Configuration object or CLI options. In main thread, creates run configuration. In worker threads, uses options as-is.
Returns
The processed configuration
getConfig
Retrieves the current configuration or generator-specific configuration.
import getConfig from './utils/configuration/index.mjs' ;
// Get full configuration
const config = getConfig ();
// Get generator-specific configuration
const metadataConfig = getConfig ( 'metadata' );
Parameters
Optional generator name. If provided, returns generator-specific configuration.
Returns
config
Configuration | GlobalConfiguration
Full configuration if no generator specified, otherwise generator-specific configuration
Configuration Types
Configuration
type Configuration = {
global : GlobalConfiguration ;
target : Array < keyof AvailableGenerators >;
threads : number ;
chunkSize : number ;
} & {
[ generator : string ] : GlobalConfiguration & GeneratorDefaultConfig ;
};
GlobalConfiguration
type GlobalConfiguration = {
repository : string ;
input : string | string [];
ignore : string | string [];
output : string ;
minify : boolean ;
version : SemVer ;
changelog : Array < ApiDocReleaseEntry >;
index : Array <{ section : string ; api : string }>;
baseURL : string | URL ;
ref : string ;
};
Template Utilities
populate
Populates a template string with configuration values.
import { populate } from './utils/configuration/templates.mjs' ;
const url = populate ( 'https://github.com/{repository}/blob/{ref}/' , config );
// Result: 'https://github.com/nodejs/node/blob/HEAD/'
Source: utils/configuration/templates.mjs:19
Examples
Loading Configuration from File
import { setConfig } from './utils/configuration/index.mjs' ;
import createGenerator from './generators.mjs' ;
// Load config from file
const config = await setConfig ({
configFile: './doc-kit.config.mjs' ,
target: [ 'json-simple' ],
});
// Run generators
const { runGenerators } = createGenerator ();
await runGenerators ( config );
Overriding Configuration
import { createRunConfiguration } from './utils/configuration/index.mjs' ;
// Merge file config with CLI overrides
const config = await createRunConfiguration ({
configFile: './doc-kit.config.mjs' ,
output: 'custom-dist/' , // Override output
threads: 8 , // Override threads
});
Generator-Specific Configuration
import getConfig from './utils/configuration/index.mjs' ;
// Inside a generator
const config = getConfig ( 'metadata' );
console . log ( config . typeMap ); // Generator-specific config
console . log ( config . version ); // Inherited from global