0.4.0 • Published 11 years ago
xconfig v0.4.0
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.