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.
$> npm i dotenv-plus-options
- NodeJs
>=v6.17.1 (npm v3.10.10)
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);
/**
.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
}
*/
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
> npm run test
Pull requests are welcome.