dotenv-plus-options

Config module to read .env config files and constructor options mixing in config.options

Usage no npm install needed!

<script type="module">
  import dotenvPlusOptions from 'https://cdn.skypack.dev/dotenv-plus-options';
</script>

README

Build Status

dotenv-plus-options

This module loads environment variables from a .env file, if there is one .env file at CWD, (with dotenv package) and any options given to the constructor, mixing it all into config.options

Constructor options always takes preference over options from .env file.

Install

gt; npm i dotenv-plus-options

Prerequisites

  • NodeJs >=v6.17.1 (npm v3.10.10)

Usage

Instantiate Config module

const {Config} = require('dotenv-plus-options');
let config;

config = new Config();
config = new Config(options);
config = new Config(options, dotenv_options);
config = new Config(null, dotenv_options);

console.log(config.options);

Example Extends Config Class

/**
 .env file on CWD:
 DB_USER=John
 ALLOWED=["foo", "bar"]
 OBJ={"id": 1, "op": ["one","two"]}
 */

const {Config} = require('dotenv-plus-options');

class App extends Config {
    constructor(opt){
        super(opt)
    }
}

const app = new App({db_user: 'root', baz: 2});

console.log(app.options);

/**
 {
  db_user: 'root', //constructor options always takes preference
  allowed: [ 'foo', 'bar' ],
  obj: { id: 1, op: [ 'one', 'two' ] },
  baz: 2
  }
 */

dotenv options

Errors

Only one error is thrown, named AdsegConfigError when you force dotenv custom .env path and dotenv cannot parse it.

const {Config} = require('dotenv-plus-options');

config = new Config(options, {path: 'nonExistingEnvFile'});

//or

config = new Config(null, {path: 'nonExistingEnvFile'});

//throws AdsegConfigError

Tests

> npm run test

Dependencies

Contributing

Pull requests are welcome.

License

MIT