0.1.4 • Published 7 years ago

tconfig v0.1.4

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago

tconfig

A simple and transparent config file loader for Nodejs applications.

install

npm i tconfig

Usage

const conig = require('tconfig');

console.log( config ); // your config object

Examples

// file: xyz.js

/*
▾ app/
    ▾ config/
       default.js     // port = 3000
       production.js  // port = 4000
    xyz.js
    package.json
*/


console.log( require('tconfig') );

Simple case

hari@hari-VirtualBox:~app$ node xyz.js 
{ port: 3000 }

Read additional config based on NODE_ENV variable.

If we specify NODE_ENV=xyz then, config/xyz.js will overide the values from default.js. Overriding is a deep merge

hari@hari-VirtualBox:~app$ env NODE_ENV=production node xyz.js 
{ port: 4000 }

Set any configuration variable using Environtment variable.

By setting an Environtment variable '=', we can set configkey as value.

First we will try to parse value as json. It it is failed value will be treated as string

If a values if parsable as JSON object, then it will be deep merged with default configuration Default prefix is TC_ ( Can be changed by setting TC_PREFIXenv variable) For eg:

  • TC_port will set config.port
  • TC_a.b.c will set config.a.b.c
  • TC_a='{"a":{"b":{"c": 123546 }}}' will also set config.a.b.c
  • TC_port=8000 will set { port: 8000 } By default, number will parsed as json number.
  • TC_port='"8000"' will set { port: '8000' } ( now port is a string because double quoted value will be parsed as string in json )
hari@hari-VirtualBox:~app$ env NODE_ENV=production TC_db.mysql.user=root node xyz.js 
{ port: 4000, db: { mysql: { user: 'root' } } }
Use custom env prefix.

default prefix can be changed using Environtment variable by setting TC_PREFIX Environtment variable

export TC_PREFIX=MYAPP_
export MYAPP_port=8080
hari@hari-VirtualBox:~app$ env MYAPP_db.mysql.user=root node xyz.js 
{ port: 8080, db: { mysql: { user: 'root' } } }

use custom config directory

config directory can be changed using Environtment variable by setting CONFIG_DIR Environtment variable

hari@hari-VirtualBox:~app$ env CONFIG_DIR=../config TC_PREFIX=MYAPP_ NODE_ENV=production MYAPP_db.mysql.user=root node xyz.js 
{ dir: '../config', db: { mysql: { user: 'root' } } }

printing debug messages

set DEBUG environment variable to tconfig

export DEBUG=tconfig
# OR
export DEBUG='*'

Config directory search path

  • Directory pointed by CONFIG_DIR environment variable
  • < directory or main script >/config
  • < current working directory >/config
0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago