1.2.1 • Published 8 years ago

hconf v1.2.1

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

hconf

An opinionated config loader for nodejs.

hconf looks for the file .<package name> (dot + package name from package.json) in the following directories (in case of conflicting property keys, the last one wins).

  • factory: in the package's root (dir where package.json is located).
  • user: in process.env.HOME, the current user's home directory.
  • custom files: a list of filenames with path. hconf is of the opinion that this option should used rarely.

hconf also looks for environment variables that look like: <uppercase package name>_A_B_C will map to the property key a.b.c (all lowercase) for the package's config.

Configuration data is global

Configuration data is merged into a nodejs global object. Once loaded, a package's config keys can be accessed with string keys <package name>.path.to.the.config.property.

Multiple packages

The sequence of require statements determines the order of merging of config data into the global object and therefore determines which config wins in the case of conflicting keys.

Example

For example, if package2 uses package1 and both packages use hconf for configuration management:

package1

/* .package1 */
{
  "some" : {
    "var" : "from package 1"
  }
}
# package1/index.coffee
hconf = require('hconf')(module:module)

hconf.get("package1.some.var")
.then (value) ->
  # value is "from package 1"

package2

/* .package2 */
{
  "some" : {
    "var" : "from package 2"
  },
  "__packages" : {
    "package1": {
      "some" : {
        "var" : "now from package 2"
      }
    }
  }
}
# package2/index.coffee

# requiring package1 loads its config first
package1 = require 'package1'

# package2's data merges and mutates the global config object
hconf = require('hconf')(module:module)

hconf.get("package2.some.var", "package1.some.var")
.then ([p2, p1]) ->
  # p2 is "from package 2"
  # p1 is "now from package 2"

Installation

Install with npm

npm install hconf

Usage

hconf = require("hconf") module: module

get(key, [key...])

  • key {String} configuration key to retrieve
  • Returns a Promise which resolves to the requested value(s) (or undefined).