2.1.2 • Published 5 years ago

node-config-manager v2.1.2

Weekly downloads
86
License
MIT
Repository
github
Last release
5 years ago

Config manager Build Status Coverage Status

A configuration manager for NodeJS. It helps you to organize your project and the different configurations of your environments.

Installation

npm install --save node-config-manager

Usage

Structure

In a project, it's often necessary to have multiple environments (test, development, preproduction, production, etc.). ConfigManager offers a simple and intuitive architecture to organize it.

Example :

config/ 
    release/        (release env)
        logger.yaml
        db.json
    develop/        (develop env)
        logger.json
        db.js
    test/           (test env)
        db.json
    logger.js       (default logger configuration)
    db.js           (default db configuration)
    lambda.json     (default lambda configuration)

The config directory can be overridden by environment variables (NODE_CONFIG_DIR='./config') or when ConfigManager is initialized (#ConfigManager.prototype.init) .

Initialize

Environment variables

NameTypeDefaultDescription
NODE_CONFIG_DIRString./configConfig directory path
NODE_ENVString--Node environment
NODE_CAMEL_CASEBooleanfalseNaming convention of variables

Method init

If you don't like to configure with environment variables, you can initialize the different variables in JavaScript by using prototype init method.

var cfgManager = require('node-config-manager'),
    options = {
		configDir: './config',
		env: 'test',
		camelCase: true
	};

cfgManager.init(options);

Manage your configurations

After the configuration of the module, you can use the configuration store everywhere.

Add a configuration

In the first step, ConfigManager will search for the config file which matches with the current environment.

Example - test environment :

config/ 
  test/           (test env)
     db.json
  logger.js       (default logger configuration)
  db.js           (default db configuration)
var cfgManager = require('node-config-manager');

cfgManager.addConfig('db') //Load config/test/db.json
		  .addConfig('logger'); // Load config/logger.js

In the second step, ConfigManager will replace the loaded configurations by environment variables if they exist.

Example - app.json :

{
  "host": "localhost",
  "port": 80,
  "fstKey": {
	"sndKey": "custom_key_1",
	"copyHost": "custom_key_2"
  }
}

And with the following environment variables :

export APP__HOST="127.0.0.1"
export APP__FST_KEY__SND_KEY="anyKey"
export APP__FST_KEY__COPY_HOST="${APP__HOST}"

Result :

{
  "host": "127.0.0.1",
  "port": 80,
  "fstKey": {
	"sndKey": "anyKey",
	"copyHost": "127.0.0.1"
  }
}

Get a configuration

After adding your configuration, there are two methods to get your configuration :

var appCfgByGetConfig = cfgManager.getConfig('app'),
	appCfgByMethod = cfgManager.method.App();

console.log(appCfgByGetConfig.host); //127.0.0.1
console.log(appCfgByMethod.port); //80

If the config doesn't exist :

  • first case : return "null",
  • second case : throw exception "undefined is not a function"

Remove a configuration

You can delete a configuration with the removeConfig method.

cfgManager.removeConfig('app');

Type inference for environment variables

Environment variables cannot be typed. ConfigManager will try to infere the type, for example APP__HOST=127.0.0.1 will be parsed as a string and APP_PORT=8080 as a number.
You can override this type inference with type prefixes in environment variables : APP_PORT=ncm_string:8080 will return a string instead of number. The following type prefixes are supported:

  • ncm_string
  • ncm_boolean
  • ncm_number

Testing

From the repo root:

npm install
npm test
2.1.2

5 years ago

2.1.0

6 years ago

2.0.0

7 years ago

1.2.0

8 years ago

1.1.0

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

10 years ago

1.0.1

10 years ago

0.0.4

11 years ago

0.0.3

11 years ago

0.0.2

11 years ago

0.0.1

11 years ago