@ngx-config/merge-loader

Loader for ngx-config that provides application settings by executing loaders in parallel and in series

Usage no npm install needed!

<script type="module">
  import ngxConfigMergeLoader from 'https://cdn.skypack.dev/@ngx-config/merge-loader';
</script>

README

@ngx-config/merge-loader npm version npm downloads

Loader for ngx-config that provides application settings by executing loaders in parallel and in series

CircleCI coverage tested with jest Conventional Commits Angular Style Guide

Please support this project by simply putting a Github star. Share this library with friends on Twitter and everywhere else you can.

Table of contents:

Getting started

Installation

You can install @ngx-config/merge-loader using npm

npm install @ngx-config/merge-loader --save

Note: You should have already installed @ngx-config/core.

Examples

Related packages

The following packages may be used in conjunction with @ngx-config/merge-loader:

Adding @ngx-config/merge-loader to your project (SystemJS)

Add map for @ngx-config/merge-loader in your systemjs.config

'@ngx-config/merge-loader': 'node_modules/@ngx-config/merge-loader/bundles/merge-loader.umd.min.js'

Settings

Setting up ConfigModule to use ConfigMergeLoader

ConfigMergeLoader requires one or more loaders of type ConfigLoader to load application settings by executing specified loaders in parallel and in series.

  • Import ConfigModule using the mapping '@ngx-config/core' and append ConfigModule.forRoot({...}) within the imports property of app.module.
  • Import ConfigMergeLoader using the mapping '@ngx-config/merge-loader'.

Note: Considering the app.module is the core module in Angular application.

app.module.ts

...
import { HttpClient } from '@angular/common/http';
import { ConfigModule, ConfigLoader } from '@ngx-config/core';
import { ConfigHttpLoader } from '@ngx-config/http-loader';
import { ConfigMergeLoader } from '@ngx-config/merge-loader';
...

export function configFactory(http: HttpClient): ConfigLoader {
  const remoteConfigLoader = new ConfigHttpLoader(http, 'http://mysite.com/api/settings'); // API ENDPOINT (remote)
  const localConfigLoader = new ConfigHttpLoader(http, './config.local.json'); // API ENDPOINT (local)

  return new ConfigMergeLoader([remoteConfigLoader, localConfigLoader]); // PARALLEL EXECUTION
}

export function configFactorySeries(http: HttpClient): ConfigLoader {
  const localConfigLoader = new ConfigHttpLoader(http, './config.local.json'); // API ENDPOINT (local)

  return new ConfigMergeLoader([localConfigLoader])
    .next((res: any) => new ConfigHttpLoader(http, res['apiEndpoint'] + 'api/settings')); // SERIES EXECUTION
}

@NgModule({
  declarations: [
    AppComponent,
    ...
  ],
  ...
  imports: [
    ConfigModule.forRoot({
      provide: ConfigLoader,
      useFactory: (configFactory),
      deps: [Http]
    }),
    ...
  ],
  ...
  bootstrap: [AppComponent]
})

ConfigMergeLoader has one parameter:

  • loaders: Array<ConfigLoader> : the loaders to be executed (by default, [new ConfigStaticLoader()])

ConfigMergeLoader has also the next public method, which you can pass the loader to be executed in series.

:+1: Well! @ngx-config/merge-loader will now provide application settings to @ngx-config/core by executing loaders in parallel and in series.

License

The MIT License (MIT)

Copyright (c) 2019 Burak Tasci