nest-boot
Version:
A Nest framework (node.js) module for getting config parameters when the app is running.
154 lines (100 loc) • 3.1 kB
Markdown
<p align="center">
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo_text.svg" width="320" alt="Nest Logo" /></a>
</p>
## Description
A component of [nestcloud](http://github.com/nest-cloud/nestcloud). NestCloud is a nest framework micro-service solution.
[中文文档](https://nestcloud.org/solutions/ben-di-pei-zhi)
A [Nest](https://github.com/nestjs/nest) module to get configurations when the app bootstrap.
## Installation
```bash
$ npm i --save nest-boot
```
## Quick Start
#### Import Module
```typescript
import { Module } from '@nestjs/common';
import { BootModule } from 'nest-boot';
const env = process.env.NODE_ENV;
export class ApplicationModule {}
```
#### Yaml Config File
eg: bootstrap-development.yml.
```yaml
web:
name: example-service
port: 3000
```
#### Usage
There are two ways to get configurations, the first, use get method:
```typescript
import { Injectable } from '@nestjs/common';
import { InjectBoot, Boot } from 'nest-boot';
export class TestService {
constructor( private readonly boot: Boot) {}
getPort() {
return this.boot.get('web.port', 3000);
}
}
```
The second, use :
```typescript
import { Injectable } from '@nestjs/common';
import { InjectBoot, Boot, DynamicBoot, BootValue } from 'nest-boot';
export class TestService extends DynamicBoot {
private readonly port: number;
constructor(
private readonly boot: Boot
) {
super(boot);
}
getPort() {
return this.port;
}
}
```
#### Get configurations with env.
nest-boot supports get configurations with env, use ${} expression, example:
```yaml
web:
serviceId: ${ SERVICE_ID || example-service }
serviceName: ${ SERVICE_NAME || example-service }
port: 3000
```
## API
### class BootModule
#### static register\(path: string, filename: string\): DynamicModule
Import nest boot module.
| field | type | description |
| :--- | :--- | :--- |
| path | string | the config file path |
| filename | string | the config filename |
### class Boot
#### get<T>\(path: string, defaults?: T\): T
Get configurations
| field | type | description |
| :--- | :--- | :--- |
| path | string | path of configurations |
| defaults | any | default value if the specific configuration is not exist |
#### getEnv\(\): string
Get current NODE\_ENV value, if not set, it will return 'development'.
#### getFilename\(\): string
Get the current config filename.
#### getConfigPath\(\): string
Get the current path of the config file.
#### getFullConfigPath\(\): string
Get the current full path of the config file.
### Decorator
#### InjectBoot\(\): PropertyDecorator
Inject Boot instance.
#### BootValue\(path: string, defaultValue?: any\): PropertyDecorator
Set configuration to class attribute.
## Stay in touch
- Author - [NestCloud](https://github.com/nest-cloud)
## License
NestCloud is [MIT licensed](LICENSE).