@nestcfork/config
TypeScript icon, indicating that this package has built-in type declarations

0.7.5 • Public • Published

NestCloud - Config

NPM Version Package License NPM Downloads Travis Linux Coverage

Description

A NestCloud component for getting and watching configurations from consul kv or kubernetes configmaps.

Installation

$ npm i --save @nestcfork/config

Quick Start

Import Module

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestcfork/config';
import { BOOT, CONSUL, ETCD, KUBERNETES } from '@nestcfork/common';

@Module({
    imports: [
        // Consul
        ConfigModule.forRootAsync({ inject: [BOOT, CONSUL] }),
        // Etcd
        ConfigModule.forRootAsync({ inject: [BOOT, ETCD] }),
        // Kubernetes
        ConfigModule.forRootAsync({ inject: [BOOT, KUBERNETES] }),
    ],
})
export class AppModule {
}

Configurations

config.key is available for consul backend and etcd backend. config.key, config.namespace, config.path are only available for kubernetes configMap.

config:
  name: nestcloud-conf
  namespace: default
  path: config.yaml

Configurations In Consul KV Or Etcd

user:
  info:
    name: 'test'

Configurations In Kubernetes ConfigMap

apiVersion: v1
data:
  config.yaml: |-
    user:
      info:
        name: 'test'

kind: ConfigMap
metadata:
  name: nestcloud-conf
  namespace: default

Inject Config Client

import { Injectable,OnModuleInit } from '@nestjs/common';
import { InjectConfig, Config } from '@nestcfork/config';

@Injectable()
export class ConfigService implements OnModuleInit {
  constructor(
      @InjectConfig() private readonly config: Config
  ) {}

  onModuleInit() {
      const userInfo = this.config.get('user.info', {name: 'judi'});
      console.log(userInfo);
  }
}

Inject value

import { Injectable } from '@nestjs/common';
import { ConfigValue } from '@nestcfork/config';

@Injectable()
export class ConfigService {
  @ConfigValue('user.info', {name: 'judi'})
  private readonly userInfo;
}

API

class ConfigModule

static forRootAsync(options): DynamicModule

Register config module.

field type description
options.inject string[] BOOT, CONSUL, KUBERNETES
options.name string key of the consul kv or name of the kubernetes configMap
options.namespace string the kubernetes namespace
options.path string the path of the kubernetes configMap

class Config

get(path?: string, defaults?: any): any

Get configuration from consul kv.

field type description
path string the path of the configuration
defaults any default value if the specific configuration is not exist

getKey(): string

Get the current key.

watch(path: string, callback: (configs: any) => void): void

Watch the configurations.

field type description
callback (configs) => void callback function

async set(path: string, value: any): void

Update configuration.

field type description
path string the path of the configuration
value any the configuration

Decorators

ConfigValue(path?: string, defaultValue?: any): PropertyDecorator

Inject configuration to attribute. It will change realtime when the value changed in consul kv.

Stay in touch

License

NestCloud is MIT licensed.

Readme

Keywords

none

Package Sidebar

Install

npm i @nestcfork/config

Weekly Downloads

0

Version

0.7.5

License

MIT

Unpacked Size

36.8 kB

Total Files

37

Last publish

Collaborators

  • kurbar