1.0.2 • Published 8 years ago
yaml-conf v1.0.2
yaml-conf
A simple yaml-based configuration utility for node apps, kept intentionally feature-light in order to make the configuration files less intimidating to non-technical users.
Basic Usage
Assuming the following files exist:
In /path/to/project/package.json:
{
"name": "application-name",
...
}In /path/to/project/default.conf.yml:
foo: default foo
bar: default barIn ~/application-name.conf.yml
foo: conf foo
baz: conf bazYou can create a configuration object using the build method:
const yamlConf = require('yaml-conf');
let conf = yamlConf.build();
console.log(conf);
// {
// foo: 'conf foo',
// bar: 'default bar',
// baz: 'conf baz'
// }Options
The build method allows you to provide options:
let conf = yamlConf.build({
projectDir: 'custom/project/dir',
appName: 'custom-app-name',
path: 'path/to/config/file',
overrides: { foo: 'override foo' }
});- projectDir: Normally,
buildobtains the project directory by traversing directories upward fromrequire.main.filename, checking each directory for the existence ofpackage.jsonas it goes. If this won't work in your project structure, or you want to specify a different project directory for whatever reason, you can do it here. If so, it must be a full path. - appName: Normally,
buildobtains the app name frompackage.jsonin the project directory. If this won't work in your project, or you'd like to provide a different name for whatever reason, you can do it here. - path: As demonstrated above,
builddefaults to reading from a file in the user's home directory with the name${appName}.conf.yml. You may use this option to specify an alternate configuration file. This supports both absolute paths as well as paths relative to the current working directory. - overrides: Properties set here will override properties from files in the result object. Use this to allow configuration through command-line arguments or other non-yaml means.
Example
yaml-conf fits well into the following pattern using
commander and
lodash:
const _ = require('lodash');
const program = require('commander');
const yamlConf = require('yaml-conf');
const pkg = require('./package.json');
program
.version(pkg.version)
.description(pkg.description)
.option('-c --config', 'Path to custom configuration file')
.option('-f --foo', 'foo option')
.option('-b --bar', 'bar option')
.parse(process.argv);
let conf = yamlConf.build({
path: program.config,
overrides: _.pick(program, [ 'foo', 'bar' ]);
});Similar Projects
As noted above, yaml-conf is kept intentionally feature-light. If you need
more features, you may be intersted in the following modules: