README
dot-conf
Simple .conf file parser for Nodejs
This is mostly done with educational purposes.
npm install @sim.perelli/dot-conf
Let's write a simple configuration file
# main.conf
# this is a comment
log_level = debug
server_name = _hostname_ # this is a symbol
# this is a namespace
@database
username = alfred # this is an inline comment
host = _localhost_
database = wayne_mansion
dot-conf will try its best to retrieve all the configuration files and serve them in a useful way
// somewhere else
const conf = await dotConf('main.conf')
conf('log_level')
// debug
conf('server_name')
// nightwing01.batcave.com
conf('database.username')
// 'alfred'
conf('mislept.or.undefined')
// undefined
conf('*')
// { log_level: 'warn', database: { username: 'alfred' ...
conf('database')
// { host: '127.0.0.1', username: 'alfred' ...
If you're organizing your application in submodules and don't feel like letting know the persistence module what an eventbus or an email server are, you can always detach a namespace from the main conf
const databaseConf = conf.detach('database')
//somewhere in the persistence module
const username = databaseConf('username')
Maybe you would like to define default values for missing configuration variables
const defaultTo = {
log_level: 'info',
server_name: 'nightwing01.batcave.com'
}
const conf = dotConf('main.conf',{ defaultTo })
Ehy what is this symbol thingy?
// some.conf
server_name = _hostname_
timeout = _timeout_
dot-conf let's you define placeholders (sorrounded by _) to access dynamically computed or very common values
// a symbol is essentially a function
const symbols = {
timeout: () => 5*1000
}
const conf = dotConf('main.file', { symbols })
Any suggestion is of course very welcome.