1.0.0 • Published 5 years ago

@database01/nest-config v1.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

Description

Configuration module for Nest based on config, class-validator, class-transformer packages.

Installation

$ npm i --save @database01/nest-config class-validator class-transformer

Quick Start

  • Create a configuration in <root>/config/default.(yaml|json). For more information, check config
port: 3000
appId: 'my-app-id'
  • Create the matching classes
import {IsString, IsNumber} from 'class-validator';

export class AppConfiguration {
  @IsNumber()
  port: number;

  @IsString()
  appId: string
}
  • Import ConfigModule in your AppModule
import {Module} from '@nestjs/common';
import {ConfigModule} from '@database01/nest-config';
import {AppConfig} from './app.config';

@Module({
  imports: [
    ConfigModule.forRoot<AppConfig>(AppConfig)
  ]
})
export class AppModule {}
  • Then you can access your configuration by injecting your configuration class
import {Injectable} from '@nestjs/common';
import { AppConfig } from './app.config';
@Injectable()
export class MyService {
  constructor(private readonly config: AppConfig) {}

  getAppId(): string {
    return this.config.appId;
  }
}

Advanced configuration

ConfigModule.forRoot accept a second parameter matching this interface

import { ClassTransformOptions } from 'class-transformer';
import { ValidatorOptions } from 'class-validator/types/validation/ValidatorOptions';
import { ValidationError } from 'class-validator/types/validation/ValidationError';

export interface ConfigModuleOption {
  /**
   * If "true", registers `ConfigModule` as a global module.
   * See: https://docs.nestjs.com/modules#global-modules
   */
  isGlobal?: boolean;
  /**
   * Apply class-transformer options
   * See: https://github.com/typestack/class-transformer
   */
  transformerOptions?: ClassTransformOptions;
  /**
   * Apply class-validator options
   * See: https://github.com/typestack/class-validator
   */
  validatorOptions?: ValidatorOptions;
  /**
   * Apply transformation on received errors
   * It may be useful if you don't want to expose configuration in logs
   */
  errorTransformer?: (errors: ValidationError[]) => Promise<Error | Error[]>;
}
1.0.0

5 years ago