index.js
'use strict'
var debug = require('debug-log')('pkg-config')
var extend = require('xtend')
var find = require('find-root')
var fs = require('fs')
var path = require('path')
module.exports = function (namespace, options, fallback) {
var opts = extend({
root: 'config',
cwd: process.cwd(),
cache: true
}, options || {})
try {
var root = find(opts.cwd)
if (!root) {
debug('could not find at %s', opts.cwd)
return
}
debug('found root at %s', root)
var pkg
if (opts.cache) {
pkg = require(path.join(root, 'package.json'))
} else {
pkg = fs.readFileSync(path.join(root, 'package.json'), {enconding: 'utf8'})
pkg = JSON.parse(pkg)
}
debug('found package.json at %s', root)
// where should we look under?
var parent = opts.root ? pkg[opts.root] : pkg
// do we have a custom namespace?
var config = namespace ? parent[namespace] : parent
// return found result or default
return config || fallback
} catch (e) {
debug(e.message)
}
}