xconfig
v0.4.0
Published
X flexible Configurations for Nodejs
Maintainers
Readme
xconfig

X flexible configuration for node.js
Why ?
I wanted a config module which is really flexibile, that
- Zero config: we could could use it even with no need to configure the config
- Flexible: Supporting multiple config file formats is not flexible. We need to provide a way to support any formats as we wish.
- Clean: Do things clean. No saving config data to
this. Seperated configurations between projects, and you also could use one. - Load and Save: Safely loading and saving with lock.
Install
$ npm install xconfig --saveUsage
var config = require('xconfig')();
config.get('db.username');Your Custom Config Location
var config = require('xconfig')({
file: '~/.myproject/config.ini'
});Custom File Codec
; config.ini
; some comments
[user.name]
family=Swiftvar ini = require('ini');
var config = require('xconfig')({
codec: {
parse: ini.parse,
stringify: ini.stringify
},
file: './config.ini'
});
console.log(config.get('user.name.family')); // SwiftThe code above is equivalent to:
var config = require('xconfig')({
codec: 'ini',
file: './config.ini'
});
console.log(config.get('user.name.family')); // Swiftfor 'ini' is a built codec.
And xconfig will try to guess the codec by extension name, so, you can just:
var config = require('xconfig')({
file: './config.ini'
});
console.log(config.get('user.name.family')); // SwiftSet and Save Configurations
config.set('user.name.first', 'Taylor');
config.save();config.ini
[user.name]
first=Taylor
family=SwiftAsync Xconfig
require('xconfig').async({
file: './config.ini'
}, function(err){
if (err){
console.error(err);
return;
}
this.get('user.name.family'); // 'Swift';
this.set('user.name.first', 'Taylor');
this.save(function(err){
if (err){
console.error('error saving', err);
}
});
});Programmatical API
xconfig(options)
Option | Type | Default Value | Description
------ | ------- | ------------- | ------------
file | path | '~/.xconfig/config.json' |
codec | String|Object | 'json' | Format of config file, available value 'ini' and 'json'. Or an object contains both two methods of parse(string) and stringify(object)
License
May be freely distributed under the MIT license.
Copyright (c) Kael Zhang and other contributors.
