Skip to content

Configuration tool for loading json that contains environment variables

License

Notifications You must be signed in to change notification settings

cmartin81/configurator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

json-configurator

Configuration tool for loading json that contains environment variables and self references. It also supports variables which is deeply nested!! Prefix your environment variables with $ and postfix it with _ (se example). To reference to another variable inside the same json prefix it with <%= and postfix it with %>

I´ve added a CLI utility for this package.

Se examples:

var config = {
  apiEndpoint : 'https://test.com',
  $prod_apiEndpoint' : 'https://prod.com'
  $local_apiEndpoint' : 'http://localhost:8080'
  userEndpoint: '<%= apiEndpoint %>/users'
};

require('json-configurator')(configJson, process.env.STAGE ).userEndpoint;  // let say that STAGE === 'prod' 
// https://prod.com/users

require('json-configurator')(configJson, 'local').userEndpoint; 
// http://localhost:8080/users

require('json-configurator')(configJson, 'foobar').userEndpoint; 
//https://test.com/users

require('json-configurator')(configJson).userEndpoint; 
//https://test.com/users

Install

$ npm install --save json-configurator

Usage

var configJson = {
  'baseUrl': 'http://test.com',
  '$prod_baseUrl': 'https://prod.com',
  'endpoints': {
    'users': '<%= baseUrl %>/users',
	'accounts': '<%= baseUrl %>/accounts'
	},
  foo: 'bar',
  foobar: 'foobar',
  $prod_foo: 'foo in prod',
  $test_foo: 'foo in test',
  deep:{
    veryDeep: {
      publicKey: 'abc',
      secret: 'secret',
      $prod_secret: 'super secret'
    }
  }
};

var config = require('json-configurator')(configJson, 'prod');

console.log(config.deep.veryDeep.secret) 
// super secret

console.log(config.endpoints.users)
// https://prod.com/users

install CLI

$ npm install -g json-configurator

Usage CLI

First create a json file:

$ echo '{"a":111, "$prod_a":999}' > test.json

# with pipe	
$ cat test.json | json-configurator  // => {a:111}
$ cat test.json | json-configurator -e prod  // => { a: 999 }

# with argument
$ json-configurator  test.json // => {a:111}
$ json-configurator -e prod  test.json // => { a: 999 }

License

MIT © cmartin81

About

Configuration tool for loading json that contains environment variables

Resources

License

Stars

Watchers

Forks

Packages

No packages published