JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1943
  • Score
    100M100P100Q106796F
  • License MIT

A nice little helper for retrieving configuration from env. vars

Package Exports

  • common-env

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (common-env) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

common-env

Build Status Deps Version

A little helper I use everywhere for configuration. Environment variables are a really great way to quickly change a program behavior.

npm

npm install common-env

Usage

var logger = console;
var env = require('common-env')(logger);

// AMQP_LOGIN=plop AMQP_CONNECT=true AMQP_EXCHANGES[0]_NAME=new_exchange node test.js
var config = env.getOrElseAll({
  amqp: {
    login: 'guest',
    password: 'guest',
    host: 'localhost',
    port: 5672,
    connect: false,
    exchanges:[{
      name: 'first_exchange'
    },{
      name: 'second_exchange'
    }]
  },

  FULL_UPPER_CASE: {
    PORT: 8080
  },

  MICROSTATS: {
    HASHKEY: 'B:mx:global'
  }
});

t.strictEqual(config.amqp.login, 'plop'); // converted from env
t.strictEqual(config.amqp.port, 5672);
t.strictEqual(config.amqp.connect, true); // converted from env
t.strictEqual(config.amqp.exchanges[0].name, 'new_exchange'); // extracted from env
t.strictEqual(config.FULL_UPPER_CASE.PORT, 8080);

Specifying multiple aliases

It sometimes useful to be able to specify aliases, for instance Clever-cloud or Heroku exposes their own environment variable names while your application's internal code may not want to rely on them.

Common-env adds a layer of indirection enabling you to specify environment aliases that won't impact your codebase.

Usage

var config = env.getOrElseAll({
  amqp: {
    login: {
      $default: 'guest',
      $aliases: ['ADDON_RABBITMQ_LOGIN', 'LOCAL_RABBITMQ_LOGIN']
    },
    password: 'guest',
    host: 'localhost',
    port: 5672
  },
});

t.strictEqual(config.amqp.login, 'plop'); // converted from env

How common-env resolves config.amqp.login

  • Common-env will first read ADDON_RABBITMQ_LOGIN environment variable, if it exists, its value will be used.
  • If not common-env will read LOCAL_RABBITMQ_LOGIN, if it exists, its value will be used.
  • If not common-env will read AMQP_LOGIN, if it exists, its value will be used.
  • If not common-env will fallback on $default value.

Changelog