We all know the pain that comes with using environment variables in your application. Since each variable is a string you have to cast the content of it to actually use it.
With type-cfg there is just one declartion for your entire application: one config to rule them all.
- Install the node package:
npm install type-cfg --save
ORyarn add type-cfg
- You also need to install
reflect-metadata
shim:npm install reflect-metadata --save
ORyarn add reflect-metadata
- Add
reflect-metadata
to your app-entry file:import 'reflect-metadata';
- 🔥 Enjoy!
import TypeConfig, { Definition, Property } from 'type-cfg';
@Definition()
class Config extends TypeConfig {
@Property({ source: 'NODE_ENV' })
environment: string;
}
const config = new Config();
if (config.environment === 'development') {
// ...
}
Scope: Class Decorator
Configuration
Usage
@Definition();
Scope: Property Decorator
Configuration
Property | Required | Default | Description |
---|---|---|---|
source |
❌ | - | The environment variable / object key as a string of the value you want to acquire |
delimiter |
❌ | , |
The delimiter used to split the value into an array |
required |
❌ | true |
Marks the property as required |
defaultValue |
❌ | - | The default value. Note that the defaultValue will be applied even if the value is required |
Usage
@Property();
@Property(options: PropertyOptions);
@Property(typeFunction: TypeFunction);
@Property(typeFunction: TypeFunction, options: PropertyOptions);
Once your configuration is decorated you can accumulate it...
import { accumulate } from 'type-cfg';
const config = new MyConfig();
accumulate(config);
// ...
import TypeConfig, { Definition, Property } from 'type-cfg';
class MyConfig extends TypeConfig {
// ...
}
const config = new MyConfig();
// ...
A huge thanks goes to the creators of TypeGraphQL and TypeORM. They gave me the inspiration to not only manage GraphQL schemas and Database relations but also configurations.