Skip to content

Registration helper for node-convict, a featureful configuration management library for Node.js

License

Notifications You must be signed in to change notification settings

jimzhan/convict-register

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

convict-register

Registration helper for node-convict, a featureful configuration management library for Node.js.

build npm version JavaScript Style Guide Commitizen friendly

With dotenv together, convict-register expands convict further by automatically registering all of the modules under the given folder to easily create a modular settings structures by splitting domain settings via files for large application.

Install

npm install convict-register

Usage

An sample structure of settings folder.

- settings/
  db.js
  redis.js
  index.js

Sample in settings/db.js.

module.exports = {
  username: {
    format: String,
    default: 'dbuser',
    env: 'DB_USER',
  },
}

Sample in settings/index.js.

const Settings = require('convict-register')

/*
  Arguments
    - abspath: absolute path to the folder with settings modules.
    - recursive: whether to recursively find all settings modules.
    - settings: top level settings values.
*/
module.exports = new Settings({
  env: {
    doc: 'Deployment environment',
    format: String,
    default: 'development',
    env: 'NODE_ENV',
  },
  host: {
    format: String,
    default: '0.0.0.0',
    env: 'HOST',
  },
  port: {
    format: 'port',
    default: 9394,
    env: 'PORT',
  },
  keys: {
    doc: 'Application secret keys',
    format: Array,
    default: [],
    env: 'SECRET',
  },
})

Using settings elsewhere (e.g. main.js):

dotenv.config()

const settings = require('./settings')

console.log(settings.get('port'))           // 9394
console.log(settings.get('db.username'))    // dbuser

The settings.convict object is essentially a convict object, meaning that you still have full capacity of convict.