0.2.2 • Published 5 years ago

@cork-labs/config-reader v0.2.2

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

Config Reader

Node.js class, reads, merges, parsers and freezes multi-file config data.

Getting Started

npm install --save @cork-labs/config-reader
const emitterMixin = require('@cork-labs/config-reader');

const environment = process.env.NODE_ENV || 'development';
const configDir = process.env.CONFIG_DIR || './config';

const configReader = new ConfigReader();
configReader.readDataDir(path.join(configDir));
configReader.readVarsFile(path.join(configDir, 'vars.json'));
const config = configReader.getData();

Data files

// ./config/defaults.json
{
  "api": {
    "port": "<%port%>",
		"domain": "<%server.domain%>"
	}
}

Variables

// ./config/vars.json
{
	"server.domain": "example.com"
}

Environment vars

Variables read from process.env override vars read from files.

Environment variable names are lowercased and _ is replaced with ..

The env var FOO_BAR will override foo.bar.

You can either use dotenv to persist environment variables locally and/or create a git ignored .env.vars.json file and use readVarsFile() to read it if present.

// .env
SERVER_DOMAIN=dev.example.com

API

readDataDir(dirName)

Reads all .json files in the directory, recursively, and merges all data together.

Uses lodash _.mergeWith(), modifying how arrays are merged:

  • if a non-array property is being overriden by an array, it replaces the original.
  • if merging an array with another array, the arrays are concatenated and then unique'd.

Attempting to read more data after getData() has been called will throw an exception.

Attempting to read a file twice will throw an exception.

readVarsFile(fileName)

Reads a single variables file. If file does not exist it is ignored.

Attempting to read more data after getData() has been called will throw an exception.

Attempting to read a file twice will throw an exception.

getData()

Prepares and returns a frozen data object.

  • merges process.env.xxx into known variables (FOO_BAR becomes foo.bar)
  • parses variables
  • deep reezes data

After getData() has been called you can no longer read data using readDataDir() or readVarsFile().

Develop

# lint and fix
npm run lint

# run test suite
npm test

# lint and test
npm run build

# serve test coverage
npm run coverage

# publish a minor version
node_modules/.bin/npm-bump minor

Contributing

We'd love for you to contribute to our source code and to make it even better than it is today!

Check CONTRIBUTING before submitting issues and PRs.

Links

MIT License

Copyright (c) 2018 Cork Labs

0.2.2

5 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.1-pre.0

6 years ago

0.1.0

6 years ago