npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ngz-config-core

v9.0.1

Published

Configuration utility for Angular

Downloads

90

Readme

@ngx-config/core npm version npm downloads

Configuration utility for Angular

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.

@ngx-config/core uses APP_INITIALIZER which executes a function when Angular app is initialized, and delay the completion of initialization process until application settings have been provided.

Table of contents:

Getting started

Installation

You can install @ngx-config/core using npm

npm install @ngx-config/core --save

Examples

Related packages

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

Recommended packages

The following package(s) have no dependency for @ngx-config/core, however may provide supplementary/shorthand functionality:

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

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

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

app.module configuration

Import ConfigModule using the mapping '@ngx-config/core' and append ConfigModule.forRoot({...}) within the imports property of app.module (considering the app.module is the core module in Angular application).

Settings

You can call the forRoot static method using ConfigStaticLoader. By default, it is configured to have no settings.

You can customize this behavior (and ofc other settings) by supplying application settings to ConfigStaticLoader.

The following examples show the use of an exported function (instead of an inline function) for AoT compilation.

Setting up ConfigModule to use ConfigStaticLoader

...
import { ConfigModule, ConfigLoader, ConfigStaticLoader } from '@ngx-config/core';
...

export function configFactory(): ConfigLoader {
  return new ConfigStaticLoader({
    "system": {
      "applicationName": "Mighty Mouse",
      "applicationUrl": "http://localhost:8000"
    },
    "seo": {
      "pageTitle": "Tweeting bird"
    },
    "i18n":{
      "locale": "en"
    }
  });
}

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

ConfigStaticLoader has one parameter:

  • providedSettings: any : application settings

:+1: Cool! @ngx-config/core will retrieve application settings before Angular initializes the app.

Setting up ConfigModule to use ConfigHttpLoader

If you provide application settings using a JSON file or an API, you can call the forRoot static method using the ConfigHttpLoader. By default, it is configured to retrieve application settings from the endpoint /config.json (if not specified).

You can customize this behavior (and ofc other settings) by supplying a api endpoint to ConfigHttpLoader.

You can find detailed information about the usage guidelines for the ConfigHttpLoader here.

Setting up ConfigModule to use ConfigMergeLoader

ConfigMergeLoader provides application settings by executing loaders in parallel and in series.

You can find detailed information about the usage guidelines for the ConfigMergeLoader here.

Usage

ConfigService has the getSettings method, which you can fetch settings loaded during application initialization.

When the getSettings method is invoked without parameters, it returns entire application configuration. However, the getSettings method can be invoked using two optional parameters: key and defaultValue.

To specify returning value type you can add generic type in getSettings.

The following example shows how to read configuration settings using all available overloads of getSettings method.

anyclass.ts

...
import { ConfigService } from '@ngx-config/core';

@Injectable()
export class AnyClass {
  constructor(private readonly config: ConfigService) {
    // note that ConfigService is injected into a private property of AnyClass
  }

  myMethodToGetUrl1a() {
    // will retrieve 'http://localhost:8000'
    const url = this.config.getSettings<string>('system.applicationUrl');
  }

  myMethodToGetUrl1b() {
    // will retrieve 'http://localhost:8000'
    const url = this.config.getSettings<string>(['system', 'applicationUrl']);
  }

  myMethodToGetUrl2a() {
    // will retrieve 'http://localhost:8000'
    const url = this.config.getSettings<string>('system').applicationUrl;
  }

  myMethodToGetUrl2b() {
    // will retrieve 'http://localhost:8000'
    const url = this.config.getSettings<string>().system.applicationUrl;
  }

  myMethodToGetUrl3a() {
    // will throw an exception (system.non_existing is not in the application settings)
    const url = this.config.getSettings<string>('system.non_existing');
  }

  myMethodToGetUrl3b() {
    // will retrieve 'no data' (system.non_existing is not in the application settings)
    const url = this.config.getSettings<string>('system.non_existing', 'no data');
  }

  myMethodToGetSeo1() {
    // will retrieve {"pageTitle":"Tweeting bird"}
    const seoSettings = this.config.getSettings<string>('seo');
  }

  myMethodToGetSeo1() {
    // will retrieve {"pageTitle":"Tweeting bird"}
    const seoSettings = this.config.getSettings<string>().seo;
  }
}

Pipe

ConfigPipe is used to get the application settings on the view level. Pipe can be appended to a string or to an Array.

<span id="property">{{'some.setting' | config}}</span>
<span id="property">{{['some', 'setting'] | config}}</span>

In order to use this pipe in lazy-loaded modules, you must import ConfigModule.forChild().

License

The MIT License (MIT)

Copyright (c) 2019 Burak Tasci