env-val

0.1.4 • Public • Published

env-val

Configuration management using environment-variables, validation & object extension.

CircleCI codecov


Using environment variables in node.js projects including validation, default values & type conversion.

Install

$ npm install env-val --save

Basic Usage

Basic schema

Schemas are loaded by default from all files matching **/*.js in the directory ./config. Define a schema in ./config/logger.js.

// Load EnvVal to be able to get the exposed joi object.
const EnvVal = require('env-val');
 
const schema = EnvVal.joi.object({
 
  LOGGER_LEVEL: EnvVal.joi
    .string()
    .valid(['error', 'warn', 'info', 'verbose', 'debug', 'silly'])
    .default('info'),
 
  LOGGER_ENABLED: EnvVal.joi
    .boolean()
    .truthy('TRUE')
    .truthy('true')
    .falsy('FALSE')
    .falsy('false')
    .default(true)
 
}).required();
 
const {error, value: envVars} = EnvVal
                                .joi
                                .validate(process.env, schema, {allowUnknown: true, stripUnknown: true});
if (error) {
  throw new Error(`Config validation error: ${error.message}`);
}
 
const values = envVars;
 
module.exports = {
  schema,
  values
};
 

Basic initialization of env-val:

const EnvVal = require('env-val');
 
let configs = new EnvVal().init();
 
console.log(configs.LOGGER_ENABLED); // => true
console.log(configs.LOGGER_LEVEL); // => 'info'
 

Override environment variables:

const EnvVal = require('env-val');
 
let configs = new EnvVal({
  LOGGER_ENABLED: false,
  LOGGER_LEVEL: 'warn'
})
configs.init();
 
console.log(configs.LOGGER_ENABLED); // => false
console.log(configs.LOGGER_LEVEL); // => 'warn'

By default config files are loaded from the ./config directory. This can be customized by passing the CONFIG_DIR option to the constructor of env-val.

const EnvVal = require('env-val');
const path = require('path');
 
let configs = new EnvVal({
  CONFIG_DIR: path.join(__dirname, 'my-custom-dir`
});
 

About

Author

Stefan Walther

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue. The process for contributing is outlined below:

  1. Create a fork of the project
  2. Work on whatever bug or feature you wish
  3. Create a pull request (PR)

I cannot guarantee that I will merge all PRs but I will evaluate them all.

License

MIT


This file was generated by verb-generate-readme, v0.6.0, on May 08, 2018.

Package Sidebar

Install

npm i env-val

Weekly Downloads

0

Version

0.1.4

License

MIT

Unpacked Size

19.5 kB

Total Files

23

Last publish

Collaborators

  • stefanwalther