Node.js configuration engine
const { Cofman, FileSource, EnvSourc, ObjectSource } = require("@umbrellio/cofman")
const instance = new Cofman()
instance.use(new FileSource({ path: "/path/to/file.yml" }))
instance.use(new FileSource({ path: "/path/to/file.json" }))
instance.use(new ObjectSource({ custom: "value" }))
instance.use(new EnvSource({ prefix: "APP" }))
const config = instance.parse()
config.get("database.url")$ yarn add @umbrellio/cofmanconst instance = new Cofman()Methods
.use(source)– setup a config source (see sources docs).parse()– parse sources and returnConfigobject
Methods
-
.get(key: string, default: any)– returns a value by corresponding key or default valuekeycan be nested by using.. For example –database.password -
.asObject()– returns config as a plain object
Cofman supports multiple sources for getting values in different ways.
Get values from env variables. All keys becomes camelCase.
new EnvSource(options)Options
prefix: string(optional, default:"") – prefix for filtering env vars eg. ifprefix: "APP"cofman will only get vars starts withAPP_(APP_DATABASE_URL,APP_NAME, etc.)tryParse: boolean(optional, default:true) – try to parse value as a jsonnestingDelitemer: string(optional, default:__) – delimeter for getting nesting values eg.SOME__NESTING_VALUE=1becomessome: { nestingValue: 1 }
Reads config from json and yaml files.
new FileSource(options)Options
path: string(required) – path to config fileparser: Parser(optional, determinites by file extension) – parser to use for this file contentfailMissing: boolean(optional, default:false) – fail when file missing or not
You can use custom file parsers using following interface:
interface Parser {
extensions: string[] // supported file extensions
parse(content: string): Object // takes file content and returns parsed object
}Just your custom object
new ObjectSource(object)Bug reports and pull requests are welcome on GitHub at https://github.com/umbrellio/cofman.
Released under MIT License.
Created by Aleksei Bespalov.