Skip to content

ConfigurableModuleBuilderOptions

reference
1 min readUpdated

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

PropertyType
optionsInjectionToken`string
moduleNamestring
alwaysTransientboolean

Diagram

mermaid
graph 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

ts
import { 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 optionsInjectionToken when consumers need to inject module configuration into providers; prefer a Symbol to avoid token collisions.
  • Set moduleName to a stable, descriptive name because it affects generated configurable-module APIs and diagnostics.
  • Enable alwaysTransient only when every register() or registerAsync() 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?

Download as PDF
ConfigurableModuleBuilderOptions — NestJS head-to-head