@labdigital/enviconf
A simple configuration library that loads configuration from environment
variables and provides a simple interface to access them.
Inspired by https://github.com/caarlos0/env
Example
Without decorators
import { BaseConfig, EnviConfig, envfield } from "@labdigital/enviconf";
class SampleConfig extends BaseConfig {
readonly HTTP_PORT: number = 4000
config(): EnviConfig {
return {
HTTP_PORT: envfield.number({
optional: true,
unset: true,
envName: "MY_HTTP_PORT",
validator: (value: number) => value > 0,
}),
}
}
}
const config = SampleConfig.load()
config.HTTP_PORT === 4000
With decorators
import { BaseConfig, envprop } from "@labdigital/enviconf";
class SampleConfig extends BaseConfig {
@envprop.string()
public readonly MY_STRING_VARIABLE: string = "default value";
@envprop.number()
public readonly MY_NUMBER_VARIABLE: number = 123;
@envprop.object()
public readonly MY_OBJECT_VALUE: object = { foo: "bar" };
@envprop.number({
optional: true,
unset: true,
envName: "MY_OTHER_ENV_VARIABLE",
envSeparator: ", ",
validator: (value: number) => value > 0,
})
public readonly ALL_OPTIONS: number = 123;
}
const config = SampleConfig.load({
path: ".env",
loadEnv: true,
envPrefix: "MY_APP_",
})