easy-loader v1.1.1
Easy loader
Simple & lightweight configuration loader for every day usage.
Easy loader helps to organize configuration files with hierarchical structured data inside.
Installation
npm install easy-loader --saveor
yarn add easy-loaderUsage
Basic file structure
root
|- config
|--- default.js // <-- optional file, but recommended to add here default values
|--- development.js
|--- staging.js
|--- production.js
|- config.js // <-- the only one file you rely on in your application
|- .localrc // <-- possibly you've already been using 'rc' moduleUse configs in your app
Suppose you define your entry point for accessing configs config.js
const optionalCustomOptions = {
pattern: ['config/<%=NODE_ENV%>.js', 'configs/<%=NODE_ENV%>.js', '<%=NODE_ENV%>.js'],
patternVars: { NODE_ENV: process.env.NODE_ENV || 'development' },
patternDefaultVars: { NODE_ENV: 'default' },
cwd: process.cwd(),
useRC: true,
rcOpts: { prefix: 'local' },
mergeWithDefaults: true,
};
module.exports = require('easy-loader')(optionalCustomOptions);And now you can use any of your config options from any place in your code, for example:
const config = require('./path/to/config');
const pg = require('pg');
const pgClient = pg.Client(config('database.pg')); // also available by using dot notation like: config.database.pgConfiguration
You may define different behavior to easy-loader by passing options from previous example.
pattern - array or string - template path to configuration files, should use lodash.template format
patternVars - object - contains all variables needed to be passed into pattern template
patternDefaultVars - object - same as patternVars, but contains values to reach default file
cwd - string - root directory where files are searching
useRC - boolean - whether or not to use rc library
rcOpts - object - currently rcOpts.prefix is used only, but can be extended in future
mergeWithDefaults - boolean - whether or not to merge values with content from default file
Advanced usage
TODO:
License
Easy loader is released under the MIT license.