UNPKG

config-reader

Version:

A dynamic JSON config file reader for nodejs

99 lines (71 loc) 2.04 kB
config-reader =========== [![NPM version](https://badge.fury.io/js/config-reader.png)](http://badge.fury.io/js/config-reader) [![Stories in Ready](https://badge.waffle.io/1412/config-reader.png?label=ready)](http://waffle.io/1412/config-reader) [![build status](https://secure.travis-ci.org/1412/config-reader.png)](http://travis-ci.org/1412/config-reader) ## Introduction NodeJS dynamic config file reader ## Instalation ``` npm install config-reader ``` ## Usage ``` (new confreader()).parseSync(<file_path>); (new confreader()).parse(<file_path>, callback(<error>, <result>)); ``` ## Sample ### Sync ``` var confreader = require("config-reader"); try { var config = (new confreader()).parseSync("config.json"); } catch (e) { } console.log(config); ``` ### Async ``` var confreader = require("config-reader"); (new confreader()).parse("config.json", function(error, config){ if (error) { } else { console.log(config); } }); ``` ## Config Format ``` # Hey, this config reader allow comment define(HOME_PATH, function( ){ return process.env.HOME }); define(PROGRAM_PATH, function( ){ return require('path').dirname(require.main.filename) }); define(CUSTOM_PATH, "/home/username/"); define(NUMBER, 5); define(MULTIPLY, function( a, b ) { return a * b }); { "config": "value", "useobject": { "child1": 0, "child2": 1 }, "use_array": [0, 1, 2, {}], "use_variable": "::CUSTOM_PATH/docs/", "use_number": ::NUMBER, "use_function": "::HOME_PATH()", "use_function2": ::MULTIPLY(2, 3) } ``` ## To Do 1. Suport more complex config 2. Allow multiline comment 3. Allow nested definition, and function call 4. Ignore trailing comma 5. ignore quote in key definiton ## Documentation ## Tests ## Contribution You are welcome to contribute by writing issues or pull requests. You are also welcome to correct any spelling mistakes or any language issues, because my english is not perfect... ## License Copyright (c) 2014 Decky Fx MIT (http://www.opensource.org/licenses/mit-license.php)