node package manager



build status

configdir-loader loads environment-specific configuration files from one or more directories into a config object.

Config files are loaded using Node's standard require() function, so they can either be JSON files, or JS files that export arbitrary objects.
Config files can also be suffixed with an optional environment, and the loader will only parse files with the active suffix.
For properties common to all environments, you can create a -base file, and the loader will recursively merge the environment-specific file into the base file.

You can also specify multiple directories to load config from, and the configuration from each directory will also be deeply merged (properties from later directories override earlier directories).

Sample directory structure:

  • core-config/
  • domains.json
  • featureSwitches.json
  • website-config/
  • sql-dev.json
  • sql-prod.json
  • featureSwitches-base.json
  • featureSwitches-prod.json
var config = require('configdir-loader').load('prod', [__dirname + '/core-config', __dirname + '/website-config']);

This will return an object with the following merged files:

    domains: [core/domains],
    featureSwitches: [core/featureSwitches, website/featureSwitches-base, website/featureSwitches-prod],
    sql: [website/sql-prod]

The loader is completely synchronous.