aboutsummaryrefslogtreecommitdiff
path: root/node_modules/vuepress/lib/prepare/loadConfig.js
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/vuepress/lib/prepare/loadConfig.js
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/vuepress/lib/prepare/loadConfig.js')
-rw-r--r--node_modules/vuepress/lib/prepare/loadConfig.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/node_modules/vuepress/lib/prepare/loadConfig.js b/node_modules/vuepress/lib/prepare/loadConfig.js
new file mode 100644
index 00000000..aa913ba0
--- /dev/null
+++ b/node_modules/vuepress/lib/prepare/loadConfig.js
@@ -0,0 +1,56 @@
+const fs = require('fs-extra')
+const path = require('path')
+const yamlParser = require('js-yaml')
+const tomlParser = require('toml')
+
+module.exports = function loadConfig (vuepressDir, bustCache = true) {
+ 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 = []
+ if (data.head) {
+ Object.keys(data.head).forEach(meta => {
+ data.head[meta].forEach(values => {
+ format.push([meta, values])
+ })
+ })
+ }
+ data.head = format
+ break
+ }
+
+ return data || {}
+}