xconfig
v0.4.0
Published
X flexible Configurations for Nodejs
Downloads
5
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 --save
Usage
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=Swift
var ini = require('ini');
var config = require('xconfig')({
codec: {
parse: ini.parse,
stringify: ini.stringify
},
file: './config.ini'
});
console.log(config.get('user.name.family')); // Swift
The code above is equivalent to:
var config = require('xconfig')({
codec: 'ini',
file: './config.ini'
});
console.log(config.get('user.name.family')); // Swift
for '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')); // Swift
Set and Save Configurations
config.set('user.name.first', 'Taylor');
config.save();
config.ini
[user.name]
first=Taylor
family=Swift
Async 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.