Socket
Socket
Sign inDemoInstall

crampon

Package Overview
Dependencies
1
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    crampon

Hierarchical configuration, made easy.


Version published
Maintainers
1
Install size
47.3 kB
Created

Readme

Source

crampon

Hierarchical configuration, made easy.

Basic Usage (No Hierarchy)

In it's most basic usage, you can add configuration objects to a crampon instance and then access that configuration:

var Crampon = require('crampon'),
    crampon = new Crampon().add({
        root: '/home/apps/ftknox'
    });

var config = crampon.getConfig();

Adding Data

Data can be added using the add and addFile methods. New data is merged with old data and if there are conflicts then new values will take precedence:

var crampon = new Crampon().add({
        root: '/home/apps/ftknox',
        db: {
            name: 'ftknox',
            pwd: '1234'
        }
    })
    .addFile('./conf'); // could be conf.js or conf.json if extension is not specified

// conf.js: module.exports = { db: { pwd:'abcd' } };

assert.deepEqual(crampon.getConfig(), {
    root: '/home/apps/ftknox',
    db: {
        name: 'ftknox',
        pwd: 'abcd'
    }
});

Hierarchical Configuration

Hierarchical configuration can be used to setup environment specific configuration with the ability to inherit and override configuration for each environment:

// Set the hierarchy when constructing an instance of crampon
var crampon = new Crampon(['prod', 'test', 'dev']).add({
    prod: {
        root: '/home/apps/ftknox',
        db: {
            name: 'ftknox',
            pwd: '1234'
        },
        debugLevel: 3
    },
    stage: {
        debugLevel: 2
    },
    dev: {
        db: {
            name: 'ftknox_dev'
        },
        debugLevel: 1
    }
});

// Get the dev configuration
var config = crampon.getConfig('dev');

// Note that the environment param defaults to the NODE_ENV environment variable

assert.deepEqual(config, {
    root: '/home/apps/ftknox',
    db: {
        name: 'ftknox_dev',
        pwd: '1234'
    },
    debugLevel: 3
});

Overrides

When using a hierarchical configuration, data added via add and addFile must have environment keys at the root. In order to override environment specific configuration with configuration that applies in all cases you can use addOverride and addOverrideFile.

Continuing the above example, you could override the debugLevel in your dev environment in this way:

crampon.addOverride({
    debugLevel: 1
});

// Get the configuration
var config = crampon.getConfig('dev');

// debugLevel is now 1 in all environments
assert.deepEqual(config, {
    root: '/home/apps/ftknox',
    db: {
        name: 'ftknox_dev',
        pwd: '1234'
    },
    debugLevel: 1
});

Arrays

As of version 0.2, arrays in configuration are replaced, rather than merged.

var crampon = new Crampon().add({
        favoriteColor: 'pink',
        otherColors: [
            'blue',
            'red'
        ]
    })
    .add({
        otherColors: [
            'green',
            'black'
        ]
    });

assert.deepEqual(crampon.getConfig(), {
    favoriteColor: 'pink',
    otherColors: [
        'green',
        'black'
    ]
});

Keywords

FAQs

Last updated on 13 May 2016

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc