2.0.2 • Published 5 years ago
@nwx/cfg v2.0.2
@nwx/cfg
A simple configuration module for Angular applications
Overview
@nwx/cfg attempts to streamline the app configuration while keeping it DRY.
How to install
npm i @nwx/cfg |OR| yarn add @nwx/cfg
How to use
// In your environment{prod,staging}.ts
import { AppCfg, TargetPlatform, HttpMethod } from '@nwx/cfg';
export const environment: AppCfg = {
// release version
version: string;
// app name
appName: 'Neekware',
// target (browser, mobile, desktop)
target: TargetPlatform.web,
// production, staging or development
production: true
// one or more app specific field(s)
};
// In your app.module.ts
import { CfgModule } from '@nwx/cfg';
import { environment } from '../environments/environment';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, CfgModule.forRoot(environment)],
bootstrap: [AppComponent]
})
export class AppModule {}
// In your app.component.ts or (some.service.ts)
import { Component } from '@angular/core';
import { CfgService } from '@nwx/cfg';
@Component({
selector: 'app-root'
})
export class AppComponent {
title = '@nwx/cfg';
constructor(public cfg: CfgService) {
this.title = this.cfg.options.appName;
}
}
Advanced usage:
- Remote configuration
@nwx/cfg
can also be used to fetch remote configuration prior to start of an Angular app.
// In your environment{prod,staging}.ts
import { AppCfg, TargetPlatform, HttpMethod } from '@nwx/cfg';
export const environment: AppCfg = {
// release version
version: '1.0.0',
// app name
appName: 'Neekware',
// target (browser, mobile, desktop)
target: TargetPlatform.web,
// production, staging or development
production: true,
// remote configuration (from the server prior to ng bootstrap)
rmtCfg: {
// server url to get remote config from (default = null)
endpoint: '/api/cfg',
// GET or POST http method to connect to remote server (default = get)
method: HttpMethod.get,
// Max timeout of http connection to remote server (default = 2 seconds)
timeout: 3,
// http headers to include in http connection to remote server
headers: { 'Content-Type': 'application/json' }
// body of request when using http POST method (default = {})
body: {
// one or more app specific field(s)
}
}
// one or more app specific field(s)
};
// In your app.module.ts
import { CfgModule } from '@nwx/cfg';
import { environment } from '../environments/environment';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, CfgModule.forRoot(environment)],
bootstrap: [AppComponent]
})
export class AppModule {}
// In your app.component.ts or (some.service.ts)
import { Component } from '@angular/core';
import { CfgService } from '@nwx/cfg';
import { merge } from 'lodash';
@Component({
selector: 'app-root'
})
export class AppComponent {
title = '@nwx/cfg';
options = {};
constructor(public cfg: CfgService) {
this.options = merge({ name: 'AppComponent' }, this.cfg.options};
const remoteCfgData = this.options.rmtData;
}
}
Running the tests
To run the tests against the current environment:
npm run ci:all
License
Released under a (MIT) license.
Version
X.Y.Z Version
`MAJOR` version -- making incompatible API changes
`MINOR` version -- adding functionality in a backwards-compatible manner
`PATCH` version -- making backwards-compatible bug fixes
Sponsors
2.0.2
5 years ago
2.0.2-dev-7b27f545c2
5 years ago
2.0.1
5 years ago
2.0.1-dev-c10e02535e
5 years ago
2.0.0
6 years ago
1.0.3
6 years ago
1.0.3-dev-120474c148
6 years ago
1.0.2
6 years ago
1.0.2-dev-864fabb583
6 years ago
1.0.1
6 years ago
1.0.1-dev-ec19e49278
6 years ago
1.0.0
6 years ago
1.0.0-dev-c4a6dd0a57
6 years ago
0.0.6
6 years ago
0.0.6-dev-d524e81110
6 years ago
0.0.5-dev-cb47216c81
6 years ago
0.0.5
6 years ago
0.0.4
6 years ago
0.0.3-dev-7de50c0706
6 years ago
0.0.3-dev-e411681324
6 years ago
0.0.3-dev-061221ec63
6 years ago
0.0.3-dev-master-e5d135a8a3
6 years ago
0.0.3
6 years ago
0.0.2
6 years ago