easy-loader

Simple & lightweight configuration loader for every day usage

Usage no npm install needed!

<script type="module">
  import easyLoader from 'https://cdn.skypack.dev/easy-loader';
</script>

README

Easy loader

Simple & lightweight configuration loader for every day usage.

Easy loader helps to organize configuration files with hierarchical structured data inside.

npm version Build Status Code Climate CircleCI dependencies:? devDependencies:? Inline docs

Installation

npm install easy-loader --save

or

yarn add easy-loader

Usage

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' module

Use 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.pg

Configuration

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.

Donation