config-kit
v2.1.0
Published
A universal, layered configuration system
Downloads
10,318
Readme
config-kit
A universal, layered configuration system.
Features
- Layered data architecture
- Schema validation using joi
- Support for
.json
,.js
, and.xml
data stores - Default values
- Environment variable precedence
- Define custom layers
- Extensible data store interface
- Support for array type values
- Apply parent directory owner when running as sudo
Installation
npm install config-kit --save
Usage
import Config from 'config-kit';
const config = await new Config().init();
await config.set('foo.bar', true);
console.log(config.get('foo')); // { "bar": true }
await config.load('/path/to/myconfig.json');
await config.set('foo.baz', 'pow');
await config.save();
Migrating from v1
v2 introduces major breaking API changes. This package was refactored to be a ES module.
This means .js
config and schema files also need to be ES modules. Since you can't
synchronously import ES modules, there was no choice but to make nearly every API async.
When creating a new Config
instance, simply prepend with await
and call init()
with the
constructor options:
v1
const cfg = new Config({ /* opts */ });
v2
const cfg = await new Config().init({ /* opts */ });
The following functions are now async: load()
, pop()
, push()
, save()
, set()
, shift()
,
unshift()
.
v1
cfg.load({ file: '/path/to/file' });
cfg.set('foo', 'bar');
cfg.push('baz', 'wiz');
cfg.save();
v2
await cfg.load({ file: '/path/to/file' });
await cfg.set('foo', 'bar');
await cfg.push('baz', 'wiz');
await cfg.save();
License
This project is open source under the Apache Public License v2 and is developed by
Axway, Inc and the community. Please read the LICENSE
file included
in this distribution for more information.