l6conf

This node.js library introduces a policy for transforming environment variables into a hierarchically structured json and allows you to overwrite configurations by importing multiple config files consequently.

Usage no npm install needed!

<script type="module">
  import l6conf from 'https://cdn.skypack.dev/l6conf';
</script>

README

l6conf

Overview

This node.js library introduces a policy for transforming environment variables into a hierarchically structured json and allows you to overwrite configurations by importing multiple config files consequently.

Overwriting Example

The overwrite direction goes from right to left, each new setting value overwrites previous ones.

/*
  Environment variables:
  FOO=0
*/
config.json({ "foo": "1", "bar": "2", "lorem": "ipsum" }).json({ "bar": "3" }).env();

config.get("foo"); // 0
config.get("bar"); // 3
config.get("lorem"); // ipsum

Nesting Example

DATABASE="MySpecialDB"
DATABASE_USERNAME="root"
DATABASE_PASSWORD="test"

transforms to:

config.get('database'); // MySpecialDB
config.get('database.username'); // root
config.get('database.password'); // test

Documentation

Installation

$ npm i --save l6conf

Load

let config = require('l6conf');

Set Environment variables

/*
  process.env.USER = "test"
  process.env.USER_FIRSTNAME = "John"
  process.env.USER_PASSWORD = "so_secret"
*/

// Sets the variables
config.env();

/*
  config.get('user');           // test
  config.get('user.firstname'); // John
  config.get('user.password')   // so_secret
*/

Set JSON variables

config.json('./path/to/file.json');

or

config.json({ "hello": { "world": "I am json" } });

Set custom variables

config.set('foo', 'bar');

or

config.json('foo.bar', 'hello world!');

Get values

config.get('foo'); // bar
config.get('foo.bar'); // hello world

Hierarchy

The values are being overwritten. This means that the last setting we add will replace previous settings.

config
  .json( { "user": "root", "pass": "secret" })
  .json( { "pass": "not_so_secret" });

config.get('pass'); // not_so_secret

Testing

To test you should install mocha

$ npm -g install mocha

and then run

$ mocha