@nestcfork/config
v0.7.5
Published
NestCloud is a Node.js micro-service solution, writing by Typescript language and Nest.js.
Readme
NestCloud - Config
Description
A NestCloud component for getting and watching configurations from consul kv or kubernetes configmaps.
Installation
$ npm i --save @nestcfork/configQuick 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.yamlConfigurations 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: defaultInject 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
- Author - NestCloud
License
NestCloud is MIT licensed.
