UNPKG

730 BJavaScriptView Raw
1const fs = require('fs')
2const path = require('path')
3const findup = require('find-up')
4const merge = require('deepmerge')
5
6const finds = name => [
7 `${name}.json`,
8 `.${name}rc`,
9 `${name}rc.js`,
10 `${name}rc.json`,
11 `${name}rc.yml`,
12 `${name}rc.yaml`,
13 `${name}.config.js`,
14 `${name}.config.json`,
15]
16
17const loadConfigFile = (name, defaultConfig = {}) => {
18 let file
19
20 try {
21 const filepath = findup.sync(finds(name))
22 const isJS = path.extname(filepath) === '.js'
23
24 file = isJS
25 ? require(filepath)
26 : JSON.parse(fs.readFileSync(filepath, 'utf-8'))
27 } catch (err) {
28 file = defaultConfig
29 }
30
31 return defaultConfig !== null ? merge(defaultConfig, file) : file
32}
33
34module.exports = loadConfigFile