12factor-dotenv

Include dotenv files in relative path tree, and parse with 12factor config


Keywords
config, env, environment, 12factor, process, file, files, .env, process.env, parse, load, export, exports
License
MIT
Install
npm install 12factor-dotenv@0.1.6

Documentation

12factor-dotenv

npm version Build Status

NPM downloads

Automagically Load Dotenv Files (.env)

This module looks for .env files loads them with node-env-file and returns a 12factor-config

Features

  • relative to parent module
    • note: Parent module is one that requires 12factor-dotenv
  • loads .env files in an ascending relative path:
    • ./
    • ../
    • ../../

Install

npm install 12factor-dotenv --save

Config schema

This module uses 12factor-config to manage a config schema, for configuration support, Read More Here

Usage

in a single config file (obey 12factor and unify your config location), do something like:

// in ./app/lib/config.js

var config = require('12factor-dotenv');
var schema = {
    DEBUG: {
        env: 'DEBUG', // the environment export var to read
        type: 'boolean', // config var type (string, integer, boolean - maybe more see 12factor-config)
        default: false
    },
    PORT: {
        env: 'PORT',
        type: 'integer',
        default: 4000
    },
    MY_CUSTOM_VAR: {
        env: 'MY_LOCAL_ENVIRONMENT_EXPORT_VAR',
        type: 'string'
    },
    NODE_ENV: {
        env: 'NODE_ENV',
        type: 'string',
        default: 'development'
    }
};

var cfg = config(schema, { debug: true, env: { overwrite: true } });

## See https://www.npmjs.com/package/node-env-file#api for more details on `env` options

console.log('info: -- PORT is', cfg.PORT);
console.log('info: -- NODE_ENV is', cfg.NODE_ENV);

console.log('debug: -- ENV Debug is', process.env.DEBUG);
console.log('debug: -- ENV Port is', process.env.PORT);

console.log('info: < Configured.');

module.exports = exports = cfg;

now var cfg = require('./path/to/app/lib/config.js'); wherever you want your unified config - and keep .env(s) updated per environment.

Note!

This package also loads native process.env variables, when parsing .env files