@kth/default-envs

0.0.53 • Public • Published

Default-envs Continous Integration

@kth/default-envs

Usage

Basic behaviour

Process env:s that are not configured on start up, but accessed via process.env.ENV_NAME in the application are added with there default values, as specified as a key-value object.

const defaultEnvs = require("@kth/default-envs");

const DEFAULTS = {
  LOG_LEVEL: "info",
  PORT: 80,
  APPINSIGHTS_INSTRUMENTATIONKEY: "",
};

defaultEnvs.set(DEFAULTS);

console.log(process.env.PORT); // 80

Override default values

If an env is set on startup it will be used, not the default.

APPINSIGHTS_INSTRUMENTATIONKEY="abc-123" node app.js
const defaultEnvs = require("@kth/default-envs");

const DEFAULTS = {
  LOG_LEVEL: "info",
  PORT: 80,
  APPINSIGHTS_INSTRUMENTATIONKEY: "",
};

defaultEnvs.set(DEFAULTS);

console.log(process.env.APPINSIGHTS_INSTRUMENTATIONKEY); // abc-123

Required values without any defaults

Some envs do not have defaults and must exist before starting your service. defaultEnvs.required([], console) will print information about if a logger is passed, and if the env is missing when invoking required throw an error Required env 'PASSWORD' does not exist. .

node app.js
const defaultEnvs = require("@kth/default-envs");

const DEFAULTS = {
  USER: "admin",
  URI: 'example.com'
};

defaultEnvs.set(DEFAULTS); 
defaultEnvs.required(['PASSWORD']); // Exception:Required env 'PASSWORD' does not exist.
PASSWORD='s3cret' node app.js
const defaultEnvs = require("@kth/default-envs");

const DEFAULTS = {
  USER: "admin",
  URI: 'example.com'
};

defaultEnvs.set(DEFAULTS); 
defaultEnvs.required(['PASSWORD']);
console.log(process.env.PASSWORD); // s3cret

Log the defaults used

If you pass a logger like console or any other that implements logger functions debug, info or warn you will get information about what defaults are used when invoking defaultEnvs.set({}, logger);

TOKEN="xxxx-yyyy" PORT=3000 node app.js
const defaultEnvs = require("@kth/default-envs");

const DEFAULTS = {
  LOG_LEVEL: "info",
  PORT: 80,
  APPINSIGHTS_INSTRUMENTATIONKEY: "",
};

defaultEnvs.set(DEFAULTS, console);
defaultEnvs.required(['TOKEN', 'PASSWORD']); 
08:57:00.808Z  INFO my-app:  - Env 'LOG_LEVEL' is not set, defaulting to 'info'.
08:57:00.811Z  INFO my-app:  - Env 'APPINSIGHTS_INSTRUMENTATIONKEY' is not set, defaulting to ''.
08:57:00.811Z  INFO my-app:  - ✅ Found required env 'TOKEN'
08:57:00.811Z  INFO my-app:  - 🚨 Missing required env 'PASSWORD'
08:57:00.811Z  WARN my-app:  Required env 'PASSWORD' does not exist.

  Exception: Required env 'PASSWORD' does not exist.

Tests

npm install npm test


  Default Envs 

    ✔ Throw an error if a required env is missing.
    ✔ Do not throw an error if a required env exists.
    ✔ If a default value is set you can access it wia process.env.
    ✔ If a env is already set prior to running set(defaults), process.env will return it.
    ✔ After runnign unset() all defaults values are removed from process.env array.
    ✔ After runnign unset() all emvs set on startup are still availible.
    ✔ If a logger is passed to the set({}, logger), use it to log.

  7 passing (10ms)
  

Demo

  1. Go to the directory https://github.com/KTH/default-envs/tree/master/demo
  2. npm install
  3. npm run ok
> default-envs-demo@0.0.1 ok
> PASSWORD='s3cret' TOKEN='xxxx-1111' APPLICATION_NAME='Super default-envs-demo 🚀' node demo.js

 - Env 'LOG_LEVEL' is not set, defaulting to 'info'.
 - Env 'PORT' is not set, defaulting to '3000'.
 - Env 'API_HOST' is not set, defaulting to 'https://api.kth.se'.
 - Env 'APPINSIGHTS_INSTRUMENTATIONKEY' is not set, defaulting to ''.
 - ✅ Found required env 'PASSWORD'
 - ✅ Found required env 'TOKEN'

Application name: Super default-envs-demo 🚀
  1. npm run fail
> default-envs-demo@0.0.1 fail
> TOKEN='xxxx-1111' node demo.js

 - Env 'APPLICATION_NAME' is not set, defaulting to 'Demo-app'.
 - Env 'LOG_LEVEL' is not set, defaulting to 'info'.
 - Env 'PORT' is not set, defaulting to '3000'.
 - Env 'API_HOST' is not set, defaulting to 'https://api.kth.se'.
 - Env 'APPINSIGHTS_INSTRUMENTATIONKEY' is not set, defaulting to ''.
 - 🚨 Missing required env 'PASSWORD'
 - ✅ Found required env 'TOKEN'
Required env 'PASSWORD' does not exist.

/Users/patricjansson/dev/kth/gita.sys.kth.se/default-envs/demo/node_modules/@kth/default-envs/index.js:69
      throw message;
      ^
Required env 'PASSWORD' does not exist.
(Use `node --trace-uncaught ...` to show where the exception was thrown)

Readme

Keywords

Package Sidebar

Install

npm i @kth/default-envs

Weekly Downloads

1

Version

0.0.53

License

MIT

Unpacked Size

15.7 kB

Total Files

14

Last publish

Collaborators

  • kth-stratus
  • mictsi
  • n_sandstrom
  • kthwebmaster
  • exacs
  • ssundkvist
  • kth-ci
  • emilstenberg