Git Product home page Git Product logo

nest-config's Introduction

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[]>;
}

nest-config's People

Contributors

julienmichelfr avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.