0.1.25 • Published 2 years ago
@lennonsaves/typed-config v0.1.25
typed-config
Why?
Configuration management is hard.
- Multiple environments mean multiple
.env
files .env
files are a list of keys and values, they have no structure- No runtime validation (you can check for existence of environment variables, but not much more (easily))
- No dev time help (autosuggestions)
- How to populate secrets secrets safely (and for multiple environments, possibly with different encyrption keys and in isolated environments)?
How to allow developers to specify secrets without having access to these secrets?
How?
- Create a
./config
directory in your project root - Add a
default.yml
in this folder and populate it with your configuration# example for `bunyan` logger config logger: name: my-awesome-project level: info
- Create a class that represents your configuration using the amazing `class-validator to define validations
import { IsDefined } from 'class-validator' import { LoggerOptions } from 'bunyan' export class Config { @IsDefined() logger: LoggerOptions }
In the
index.ts
(or whatever yourmain
file is) load the configimport { loadConfig } from '@barath/typed-config' import { Config } from './lib/config' import bunyan from 'bunyan' export const config = loadConfig(Config) export const logger = bunyan.createLogger(config.logger) logger.info('hello world')
- Create a
0.1.25
2 years ago