ConfigModule
Provides configuration management with namespace support. Uses registerAs() to create typed config namespaces that can be injected.
// Define config namespacesconst databaseConfig = registerAs('database', (env) => ({ url: env.DATABASE_URL, maxConnections: 10}))const emailConfig = registerAs('email', (env) => ({ provider: env.EMAIL_PROVIDER, from: { name: 'App', email: 'noreply@example.com' }}))// Register in module@Module({ imports: [ ConfigModule.forRoot({ load: [databaseConfig, emailConfig], validateSchema: AppConfigSchema }) ]})export class AppModule {}// Inject configconstructor( @inject(CONFIG_TOKENS.ConfigService) private config: IConfigService, @inject(databaseConfig.KEY) private dbConfig: DatabaseConfig) { // Use dot notation const url = this.config.get('database.url') // Or inject namespace directly const url = this.dbConfig.url} Copy
// Define config namespacesconst databaseConfig = registerAs('database', (env) => ({ url: env.DATABASE_URL, maxConnections: 10}))const emailConfig = registerAs('email', (env) => ({ provider: env.EMAIL_PROVIDER, from: { name: 'App', email: 'noreply@example.com' }}))// Register in module@Module({ imports: [ ConfigModule.forRoot({ load: [databaseConfig, emailConfig], validateSchema: AppConfigSchema }) ]})export class AppModule {}// Inject configconstructor( @inject(CONFIG_TOKENS.ConfigService) private config: IConfigService, @inject(databaseConfig.KEY) private dbConfig: DatabaseConfig) { // Use dot notation const url = this.config.get('database.url') // Or inject namespace directly const url = this.dbConfig.url}
Initialize config service with merged namespaces Called after all providers are registered
Static
Configure ConfigModule with namespace loaders
Configuration options
Dynamic module with config infrastructure
ConfigModule
Provides configuration management with namespace support. Uses registerAs() to create typed config namespaces that can be injected.
Example