@labdigital/enviconf
TypeScript icon, indicating that this package has built-in type declarations

0.6.0 • Public • Published

@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

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;

  // Read JSON values
  @envprop.object()
  public readonly MY_OBJECT_VALUE: object = { foo: "bar" };

  @envprop.number({
    // optional, defaults to false. Sets empty value if no env variable is set
    optional: true,

    // optional, defaults to false. Unsets the env variable after reading
    unset: true,

    // optional, env variable to read the value from, defaults to the property name
    envName: "MY_OTHER_ENV_VARIABLE",

    // optional, defaults to ", ". Allows setting a custom separator for array values
    envSeparator: ", ",

    // optional, defaults to undefined. Allows setting a custom validator, should
    // throw an error if the value is invalid
    validator:  (value: number) => value > 0,
  })
  public readonly ALL_OPTIONS: number = 123;
}

const config = SampleConfig.load({
  // optional, path to the .env values, defaults to ".env"
  path: ".env",

  // optional, indicates if a .env file should be read, defaults to true
  loadEnv: true,

  // optional, if set, will be used as prefix for all env variables while
  // falling back to the original name if the prefixed variable is not set
  envPrefix: "MY_APP_",
})

Readme

Keywords

none

Package Sidebar

Install

npm i @labdigital/enviconf

Weekly Downloads

602

Version

0.6.0

License

MIT

Unpacked Size

75.2 kB

Total Files

14

Last publish

Collaborators

  • pimvernooij
  • mvantellingen
  • korsvanloon
  • blurrah
  • bramkaashoek