diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/vuepress/lib/prepare/loadConfig.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-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.js | 56 |
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 || {} +} |
