Skip to content

Latest commit

 

History

History
127 lines (87 loc) · 3.37 KB

README.md

File metadata and controls

127 lines (87 loc) · 3.37 KB

env-val

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

CircleCI codecov FOSSA Status


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.

FOSSA Status