@ngx-config/fs-loader
Version:
Loader for ngx-config that provides application settings using fs (server platform)
136 lines (111 loc) • 5.76 kB
Markdown
# @ngx-config/fs-loader [](https://www.npmjs.com/package/@ngx-config/fs-loader) [](https://www.npmjs.com/package/@ngx-config/fs-loader)
Loader for [ngx-config] that provides application settings using **`fs`** (server platform)
[](https://circleci.com/gh/fulls1z3/ngx-config)
[](https://codecov.io/gh/fulls1z3/ngx-config)
[](https://github.com/facebook/jest)
[](https://conventionalcommits.org)
[](https://angular.io/styleguide)
> Please support this project by simply putting a Github star. Share this library with friends on Twitter and everywhere else you can.
#### NOTICE
> This *[5.x.x] branch* is intented to work with `@angular v5.x.x`. If you're developing on a later release of **Angular**
than `v5.x.x`, then you should probably choose the appropriate version of this library by visiting the *[master] branch*.
## Table of contents:
- [Prerequisites](#prerequisites)
- [Getting started](#getting-started)
- [Installation](#installation)
- [Examples](#examples)
- [Related packages](#related-packages)
- [Adding `@ngx-config/fs-loader` to your project (SystemJS)](#adding-systemjs)
- [Settings](#settings)
- [Setting up `ConfigModule` to use `ConfigFsLoader`](#setting-up-fsloader)
- [License](#license)
## <a name="prerequisites"></a> Prerequisites
This library depends on `Angular v4.0.0`. Older versions contain outdated dependencies, might produce errors.
Also, please ensure that you are using **`Typescript v2.5.3`** or higher.
## <a name="getting-started"> Getting started
### <a name="installation"> Installation
You can install **`@ngx-config/fs-loader`** using `npm`
```
npm install @ngx-config/fs-loader --save
```
**Note**: You should have already installed [@ngx-config/core].
### <a name="examples"></a> Examples
- [ng-seed/universal] and [fulls1z3/example-app] are officially maintained projects, showcasing common patterns and best
practices for **`@ngx-config/fs-loader`**.
### <a name="related-packages"></a> Related packages
The following packages may be used in conjunction with **`@ngx-config/fs-loader`**:
- [@ngx-config/core]
- [@ngx-universal/config-loader]
- [@ngx-config/merge-loader]
### <a name="adding-systemjs"></a> Adding `@ngx-config/fs-loader` to your project (SystemJS)
Add `map` for **`@ngx-config/fs-loader`** in your `systemjs.config`
```javascript
'@ngx-config/fs-loader': 'node_modules/@ngx-config/fs-loader/bundles/fs-loader.umd.min.js'
```
## <a name="settings"></a> Settings
### <a name="setting-up-fsloader"></a> Setting up `ConfigModule` to use `ConfigFsLoader`
If you provide application settings using a `JSON` file (*on the `server platform`*), you can call the [forRoot] static
method using the `ConfigFsLoader`. By default, it is configured to retrieve **application settings** from the path `/config.json`
(*if not specified*).
> You can customize this behavior (*and ofc other settings*) by supplying a **file path** to `ConfigFsLoader`.
- Import `ConfigModule` using the mapping `'@ngx-config/core'` and append `ConfigModule.forRoot({...})` within the imports
property of **app.module**.
- Import `ConfigFsLoader` using the mapping `'@ngx-config/fs-loader'`.
**Note**: *Considering the app.module is the core module in Angular application*.
#### config.json
```json
{
"system": {
"applicationName": "Mighty Mouse",
"applicationUrl": "http://localhost:8000"
},
"seo": {
"pageTitle": "Tweeting bird"
},
"i18n":{
"locale": "en"
}
}
```
#### app.module.ts
```TypeScript
...
import { ConfigModule, ConfigLoader } from '@ngx-config/core';
import { ConfigFsLoader } from '@ngx-config/fs-loader';
...
export function configFactory(): ConfigLoader {
return new ConfigFsLoader('./public/assets/config.json'); // FILE PATH
}
@NgModule({
declarations: [
AppComponent,
...
],
...
imports: [
ConfigModule.forRoot({
provide: ConfigLoader,
useFactory: (configFactory)
}),
...
],
...
bootstrap: [AppComponent]
})
```
`ConfigFsLoader` has one parameter:
- **path**: `string` : path to `JSON file`, to retrieve application settings from (*by default, `config.json`*)
> :+1: Well! **`@ngx-config/fs-loader`** will now provide **application settings** to [@ngx-config/core] using `fs`.
## <a name="license"></a> License
The MIT License (MIT)
Copyright (c) 2018 [Burak Tasci]
[master]: https://github.com/ngx-config/core/tree/master
[5.x.x]: https://github.com/ngx-config/core/tree/5.x.x
[ngx-config]: https://github.com/fulls1z3/ngx-config
[ng-seed/universal]: https://github.com/ng-seed/universal
[fulls1z3/example-app]: https://github.com/fulls1z3/example-app
[@ngx-config/core]: https://github.com/fulls1z3/ngx-config/tree/master/packages/@ngx-config/core
[@ngx-universal/config-loader]: https://github.com/fulls1z3/ngx-config/tree/master/packages/@ngx-universal/config-loader
[@ngx-config/merge-loader]: https://github.com/fulls1z3/ngx-config/tree/master/packages/@ngx-config/merge-loader
[forRoot]: https://angular.io/docs/ts/latest/guide/ngmodule.html#!#core-for-root
[Burak Tasci]: https://github.com/fulls1z3