<a href="https://travis-ci.org/hapinessjs/config.svg?branch=master">
<img src="https://travis-ci.org/hapinessjs/config.svg?branch=master" alt="build" />
</a>
<a href="https://coveralls.io/github/hapinessjs/config?branch=master">
<img src="https://coveralls.io/repos/github/hapinessjs/config/badge.svg?branch=master" alt="coveralls" />
</a>
<a href="https://david-dm.org/hapinessjs/config">
<img src="https://david-dm.org/hapinessjs/config.svg" alt="dependencies" />
</a>
<a href="https://david-dm.org/hapinessjs/config?type=dev">
<img src="https://david-dm.org/hapinessjs/config/dev-status.svg" alt="devDependencies" />
</a>
<a href="https://www.typescriptlang.org/docs/tutorial.html">
<img src="https://cdn-images-1.medium.com/max/800/1*8lKzkDJVWuVbqumysxMRYw.png"
align="right" alt="Typescript logo" width="50" height="50" style="border:none;" />
</a>
<a href="http://reactivex.io/rxjs">
<img src="http://reactivex.io/assets/Rx_Logo_S.png"
align="right" alt="ReactiveX logo" width="50" height="50" style="border:none;" />
</a>
<a href="http://hapijs.com">
<img src="http://bit.ly/2lYPYPw"
align="right" alt="Hapijs logo" width="75" style="border:none;" />
</a>
Hapiness Config
Configuration module based on node-config & js-yaml libraries.Table of contents
* [Yarn or NPM it in your package.json](#yarn-or-npm-it-in-your-packagejson)
* [Standalone](#standalone)
* [Hapiness](#hapiness)
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: postgresql
hostname: localhost
user: pguser
password: keyboard cat
Hapiness module
:// external-module.ts
import {
HapinessModule,
CoreModuleWithProviders,
InjectionToken,
Inject,
Optional,
} from '@hapiness/core';
import { ConfigHelper, ConfigInterface } from '@hapiness/config';
@HapinessModule({
...
})
export class ExternalModule {
static setConfig(config: ConfigInterface): CoreModuleWithProviders {
return {
module: ExternalModule,
providers: [ConfigHelpers.getProvider('mymodule_database', config)]
};
}
}
export class Service {
constructor(@Optional() @Inject(ConfigHelper.getInjectionToken('mymodule_database')) config) { // @Optional to not throw errors if config is not passed
...
}
}
// main-module.ts
import {
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.ts
import {
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()
class MyCustomService {
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)
peerDependencies
* Latest packages' versions
* Documentation
- v1.1.1 (2017-12-28)
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 topMaintainers
Back to top
License
Copyright (c) 2018 Hapiness Licensed under the MIT license.Back to top