mirror of
https://github.com/wahyd4/vuepress.git
synced 2026-08-09 13:26:08 +10:00
refactor: move loadConfig into util
This commit is contained in:
+2
-45
@@ -1,9 +1,8 @@
|
||||
const path = require('path')
|
||||
const fs = require('fs-extra')
|
||||
const globby = require('globby')
|
||||
const yamlParser = require('js-yaml')
|
||||
const tomlParser = require('toml')
|
||||
const createMarkdown = require('./markdown')
|
||||
const loadConfig = require('./util/loadConfig')
|
||||
const tempPath = path.resolve(__dirname, 'app/.temp')
|
||||
const {
|
||||
inferTitle,
|
||||
@@ -76,21 +75,7 @@ if (!Object.assign) Object.assign = require('object-assign')`
|
||||
|
||||
async function resolveOptions (sourceDir) {
|
||||
const vuepressDir = path.resolve(sourceDir, '.vuepress')
|
||||
const configPath = path.resolve(vuepressDir, 'config.js')
|
||||
const configYmlPath = path.resolve(vuepressDir, 'config.yml')
|
||||
const configTomlPath = path.resolve(vuepressDir, 'config.toml')
|
||||
|
||||
delete require.cache[configPath]
|
||||
|
||||
// resolve siteConfig
|
||||
let siteConfig = {}
|
||||
if (fs.existsSync(configYmlPath)) {
|
||||
siteConfig = await parseConfig(configYmlPath)
|
||||
} else if (fs.existsSync(configTomlPath)) {
|
||||
siteConfig = await parseConfig(configTomlPath)
|
||||
} else if (fs.existsSync(configPath)) {
|
||||
siteConfig = require(configPath)
|
||||
}
|
||||
const siteConfig = loadConfig(vuepressDir)
|
||||
|
||||
// normalize head tag urls for base
|
||||
const base = siteConfig.base || '/'
|
||||
@@ -361,31 +346,3 @@ function sort (arr) {
|
||||
return 0
|
||||
})
|
||||
}
|
||||
|
||||
async function parseConfig (file) {
|
||||
const content = await fs.readFile(file, 'utf-8')
|
||||
const [extension] = /.\w+$/.exec(file)
|
||||
let data
|
||||
|
||||
switch (extension) {
|
||||
case '.yml':
|
||||
case '.yaml':
|
||||
data = yamlParser.safeLoad(content)
|
||||
break
|
||||
|
||||
case '.toml':
|
||||
data = tomlParser.parse(content)
|
||||
// reformat to match config since TOML does not allow different data type
|
||||
// https://github.com/toml-lang/toml#array
|
||||
const format = []
|
||||
Object.keys(data.head).forEach(meta => {
|
||||
data.head[meta].forEach(values => {
|
||||
format.push([meta, values])
|
||||
})
|
||||
})
|
||||
data.head = format
|
||||
break
|
||||
}
|
||||
|
||||
return data || {}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
const fs = require('fs-extra')
|
||||
const path = require('path')
|
||||
const yamlParser = require('js-yaml')
|
||||
const tomlParser = require('toml')
|
||||
|
||||
module.exports = function loadConfig (vuepressDir, bustCache = false) {
|
||||
const configPath = path.resolve(vuepressDir, 'config.js')
|
||||
const configYmlPath = path.resolve(vuepressDir, 'config.yml')
|
||||
const configTomlPath = path.resolve(vuepressDir, 'config.toml')
|
||||
|
||||
if (bustCache) {
|
||||
delete require.cache[configPath]
|
||||
}
|
||||
|
||||
// resolve siteConfig
|
||||
let siteConfig = {}
|
||||
if (fs.existsSync(configYmlPath)) {
|
||||
siteConfig = parseConfig(configYmlPath)
|
||||
} else if (fs.existsSync(configTomlPath)) {
|
||||
siteConfig = parseConfig(configTomlPath)
|
||||
} else if (fs.existsSync(configPath)) {
|
||||
siteConfig = require(configPath)
|
||||
}
|
||||
|
||||
return siteConfig
|
||||
}
|
||||
|
||||
function parseConfig (file) {
|
||||
const content = fs.readFileSync(file, 'utf-8')
|
||||
const [extension] = /.\w+$/.exec(file)
|
||||
let data
|
||||
|
||||
switch (extension) {
|
||||
case '.yml':
|
||||
case '.yaml':
|
||||
data = yamlParser.safeLoad(content)
|
||||
break
|
||||
|
||||
case '.toml':
|
||||
data = tomlParser.parse(content)
|
||||
// reformat to match config since TOML does not allow different data type
|
||||
// https://github.com/toml-lang/toml#array
|
||||
const format = []
|
||||
Object.keys(data.head).forEach(meta => {
|
||||
data.head[meta].forEach(values => {
|
||||
format.push([meta, values])
|
||||
})
|
||||
})
|
||||
data.head = format
|
||||
break
|
||||
}
|
||||
|
||||
return data || {}
|
||||
}
|
||||
Reference in New Issue
Block a user