Novelty Plastic Moustache

    deep-conf

    0.1.6 • Public • Published

    Deep-conf

    Configuration library for Node.js application server deployments. It lets you define a set of configs with inheritance.

    Quick Start

    Install it with NPM or add it to your package.json:

    $ npm install deep-conf

    Then:

    // Create instance by factory
    var configBuilder = require('deep-conf')();
     
    // Register new config with name "sampleConfig"
    configBuilder.register({
        name: 'sampleConfig',
        config: {
            host: 'localhost',
            port: 80,
            fullName: function(config) {
                return 'http://' + config.host + ':' + config.port;
            }
        }
    });
     
    // Get registered config by name
    var config = configBuilder.get('sampleConfig');
     
    console.log(config.host, config.port, config.fullName);
    // localhost 80 http://localhost:80

    API

    register: create new config with name and optional parent. NOTE: field info, that contains name and parentName, will be added to config, so do not add to your config field with this name, because it will be overrided.

    // Register new config with name "development"
    configBuilder.register({
        name: 'development',
        config: {
            host: 'localhost',
            port: 80
        }
    });
     
    // Register new config with name "production",
    // inherite it from "development"
    // and replace field "host" with new value
    configBuilder.register({
        name: 'production',
        parent: 'development',
        config: {
            host: 'example.com'
        }
    });

    update: update existing config

    // Update fields of existing config "development"
    configBuilder.update({
        name: 'development',
        config: {
            protocol: 'https'
        }
    });

    get: get registered config

    // Get config "production"
    var config = configBuilder.get('production');
     
    console.log(config.host, config.port);
    // example.com 80

    func: define in config functional field

    // Register config with functional field
    configBuilder.register({
        name: 'funcConfig',
        config: {
            f: configBuilder.func(function(a, b) {
                return a + b;
            })
        }
    });
     
    var config = configBuilder.get('funcConfig');
     
    console.log(config.f(1, 2));
    // 3

    stringify: get registered config as string with optional space count (like JSON.stringify)

    // Register config "stringConfig"
    configBuilder.register({
        name: 'stringConfig',
        config: {
            host: 'localhost',
            port: 80,
            fullName: function(config) {
                return 'http://' + config.host + ':' + config.port;
            },
            sum: configBuilder.func(function(a, b) {
                var sum = a + b;
                return sum;
            })
        }
    });
     
    // Stringify config "stringConfig"
    var str = configBuilder.stringify('stringConfig', 2);
     
    console.log(str);
    // {
    //   "host": "localhost",
    //   "port": 80,
    //   "fullName": "http://localhost:80",
    //   "sum": function (a, b) {var sum = a + b;return sum;}
    // }

    ConfigBuilder: create instance with constructor

    var configBuilder = new (require('deep-conf').ConfigBuilder)();

    Install

    npm i deep-conf

    DownloadsWeekly Downloads

    89

    Version

    0.1.6

    License

    none

    Last publish

    Collaborators

    • 2do2go