Skip to content

PopovMP/config-json

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A simple Config helper for nodejs

config-json is a very simple helper for reading config files in a JSON format. It can read private setting from a separate local config file.

Homepage: https://github.com/popovmp/config-json#readme

Synopsis

// Make a config.json file with your settings

// Initialise config-json once in your index.js
const config = require('@popovmp/config-json').init(__dirname);
const value = config.get('key');

// Use it in your other files
const config = require('@popovmp/config-json');
const value = config.get('key');

// You can also use the configGet exposed method
const { configGet } = require('@popovmp/config-json');
const value = configGet('key');

Installation

npm install @popovmp/config-json

Usage

config-json must be initialized with the path to the folder, which contains the config files. It is a good idea to set the base path relative to __dirname.

You have to initialize the config lib only once. It is best to do it in the application main script index.js or app.js.

config-json reads two files: config.json and config-local.json. The first file must exist. The second one is optional.

The records from config-local.json overrides the records of config.json.

Example config.json file as follows:

{
  "key": 42,
  "arr": [1, 2]
}

Example config-local.json file with your private settings as follows:

{
  "secret": "vim rocks!"
}
const config = require('@popovmp/config-json');
config.init(__dirname);

const value  = config.get('key');    // gets 42 (read from config.json)
const secret = config.get('secret'); // gets 'vim rocks!' (read from config-local.json)

or

const { configGet } = require('@popovmp/config-json').init(__dirname);

const value  = configGet('key');    // gets 42
const secret = configGet('secret'); // gets 'vim rocks!'

If you have private or local settings, you can separate them in two configs files:

  • config.json file with your public settings
  • config-local.json with your private settings. It can be put in .gitignore to prevent it from publishing.

config-json clones the provided values. It guarantees that the values cannot be changed from the code.

const arr1 = configGet('arr');
arr1[0] = 42;

const arr2 = configGet('arr');
console.log(arr2[0]); // => 1;

Methods

config-json exports two methods:

/**
 * Reads the config file at startup.
 * @param {string} basePath - dircetory that conatins config.js
 * @return { {get, configGet} };
 */
function init(basePath) { }
/**
 * Gets a value from the config file
 * @param  { string } key
 * @return { any } value
 */
function get(key) { }
/**
 * Gets a value from the config file
 * @param  { string } key
 * @return { any } value
 */
function configGet(key) { }

License

config-json is free for use and modification. No responsibilities for damages of any kind.

Copyright (c) 2020 Miroslav Popov

About

A simple Config lib for nodejs without dependencies. It reads `config.json` file. If a `config-local.json` exists, it overrides the values in the first file.

Topics

Resources

License

Stars

Watchers

Forks