Skip to content

Repository files navigation

Hapiness

buildcoverallsdependenciesdevDependencies
Typescript logoReactiveX logoHapijs logo

Hapiness Config

Configuration module based on node-config & js-yaml libraries.

Table of contents

Using config module

yarn or npm it in your package.json

$ npm install --save @h@hapiness/config
or
$ yarn add @hapiness/config
"dependencies": {"@hapiness/config": "^1.2.1",//...}//...

Standalone

./config/default.yml:

my:
config: test

Node.js Script:

import{Config}from'@hapiness/config';if(Config.has('my.config')){console.log(Config.get('my.config'));// output: 'test'}

Hapiness

./config/default.yml:

external_service:
baseUrl: 'test'mymodule_database:
provider: postgresqlhostname: localhostuser: pguserpassword: keyboard cat

Hapiness module:

// external-module.tsimport{HapinessModule,CoreModuleWithProviders,InjectionToken,Inject,Optional,}from'@hapiness/core';import{ConfigHelper,ConfigInterface}from'@hapiness/config';
@HapinessModule({
...
})exportclassExternalModule{staticsetConfig(config: ConfigInterface): CoreModuleWithProviders{return{module: ExternalModule,providers: [ConfigHelpers.getProvider('mymodule_database',config)]};}}exportclassService{constructor(@Optional() @Inject(ConfigHelper.getInjectionToken('mymodule_database'))config){// @Optional to not throw errors if config is not passed
...
}}
// main-module.tsimport{HapinessModule,}from'@hapiness/core';import{ExternalModule}from'external-module';import{Config}from'@hapiness/config';
@HapinessModule({
...
imports: [ExternalModule.setConfig(Config.get('mymodule_database'))]})
...

Hapiness service:

// main-module.tsimport{HapinessModule,}from'@hapiness/core';import{ConfigHelper,Config}from'@hapiness/config';import{MyCustomService}from'./services';
@HapinessModule({
...
providers: [ConfigHelper.getProvider('external_service'),MyCustomService,
...
]})
...
import{Injectable}from'@hapiness/core';import{ConfigInterface}from'@hapiness/config';// my-custom-service.ts
@Injectable()classMyCustomService{private_baseUrl: string;constrcutor(
@Inject(ConfigHelper.getInjectionToken('external_service'))private_config: ConfigInterface){}connect(){this._baseUrl=this._config.get<string>('baseUrl');}}...

Back to top

Change History

  • v1.2.1 (2018-09-26)
    • Fix a bug when default value of get() was a falsy value and wrongly interpreted as undefined
  • v1.2.0 (2018-05-09) * Delete obsolete peerDependencies
    • Latest packages' versions
    • Documentation
  • v1.1.1 (2017-12-28) * Fix load config
  • v1.1.0 (2017-11-20)
    • Latest packages' versions.
    • Documentation.
    • Change packaging process.
  • v1.0.0 (2017-10-27)
    • Create Config module.
    • Tests module.
    • Documentation.
    • First stable version.

Back to top

Maintainers

tadaweb
Julien FauvilleAntoine GomezSébastien RitzNicolas Jessel

Back to top

License

Copyright (c) 2018 Hapiness Licensed under the MIT license.

Back to top

About

Configuration library based on node-config library

Resources

Stars

0 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages