Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hapinessjs/config
Configuration library based on node-config library
https://github.com/hapinessjs/config
Last synced: 24 days ago
JSON representation
Configuration library based on node-config library
- Host: GitHub
- URL: https://github.com/hapinessjs/config
- Owner: hapinessjs
- License: mit
- Created: 2017-05-08T13:06:06.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-09-28T08:46:54.000Z (over 6 years ago)
- Last Synced: 2024-12-09T20:08:19.939Z (28 days ago)
- Language: TypeScript
- Homepage:
- Size: 117 KB
- Stars: 0
- Watchers: 6
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Hapiness Config
Configuration module based on [node-config](https://github.com/lorenwest/node-config) & [js-yaml](https://github.com/nodeca/js-yaml) libraries.
## Table of contents
* [Using config module](#using-config-module)
* [Yarn or NPM it in your package.json](#yarn-or-npm-it-in-your-packagejson)
* [Standalone](#standalone)
* [Hapiness](#hapiness)
* [Change History](#change-history)
* [Maintainers](#maintainers)
* [License](#license)## Using config module
### `yarn` or `npm` it in your `package.json`
```bash
$ npm install --save @h@hapiness/configor
$ yarn add @hapiness/config
``````javascript
"dependencies": {
"@hapiness/config": "^1.2.1",
//...
}
//...
```### Standalone
`./config/default.yml`:
```yaml
my:
config: test
````Node.js Script`:
```javascript
import { Config } from '@hapiness/config';if (Config.has('my.config')) {
console.log(Config.get('my.config')); // output: 'test'
}
```### Hapiness
`./config/default.yml`:
```yaml
external_service:
baseUrl: 'test'mymodule_database:
provider: postgresql
hostname: localhost
user: pguser
password: keyboard cat
````Hapiness module`:
```javascript
// 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
...
}
}
``````javascript
// 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`:
```javascript
// 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,
...
]
})
...
``````javascript
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('baseUrl');
}}
...
```[Back to top](#table-of-contents)
## 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](#table-of-contents)
## Maintainers
Julien Fauville
Antoine Gomez
Sébastien Ritz
Nicolas Jessel
[Back to top](#table-of-contents)
## License
Copyright (c) 2018 **Hapiness** Licensed under the [MIT license](https://github.com/hapinessjs/config/blob/master/LICENSE.md).
[Back to top](#table-of-contents)