Kind: Interface
Source: packages/common/module-utils/configurable-module.builder.ts
Part of: Common
ConfigurableModuleBuilderOptions configures how a configurable module is generated by Nest's module utilities. It defines the injection token used for module options, the module name used in generated APIs, and whether each registration should create a transient module instance.
Properties
| Property | Type |
|---|---|
optionsInjectionToken | `string |
moduleName | string |
alwaysTransient | boolean |
Diagram
mermaidgraph LR A[ConfigurableModuleBuilderOptions] --> B[optionsInjectionToken] A --> C[moduleName] A --> D[alwaysTransient] B --> E[Inject module configuration] C --> F[Generate named registration methods] D --> G[Control module instance reuse]
Usage
tsimport { ConfigurableModuleBuilder } from '@nestjs/common';
export interface DatabaseModuleOptions {
uri: string;
poolSize?: number;
}
const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } =
new ConfigurableModuleBuilder<DatabaseModuleOptions>({
moduleName: 'Database',
optionsInjectionToken: Symbol('DATABASE_MODULE_OPTIONS'),
alwaysTransient: false,
}).build();
export { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN };
AI Coding Instructions
- Use
optionsInjectionTokenwhen consumers need to inject module configuration into providers; prefer aSymbolto avoid token collisions. - Set
moduleNameto a stable, descriptive name because it affects generated configurable-module APIs and diagnostics. - Enable
alwaysTransientonly when everyregister()orregisterAsync()call must create a distinct dynamic module instance. - Keep the options interface aligned with the generic passed to
ConfigurableModuleBuilder<TOptions>. - Export the generated module class and options token so feature providers can register and inject configuration consistently.
Was this page helpful?