2021-03-01 15:06:11 +08:00

66 lines
2.8 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveSiteData = exports.resolveUserConfig = exports.resolveConfig = void 0;
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const chalk_1 = __importDefault(require("chalk"));
const globby_1 = __importDefault(require("globby"));
const resolver_1 = require("./resolver");
var config_1 = require("./shared/config");
Object.defineProperty(exports, "resolveSiteDataByRoute", { enumerable: true, get: function () { return config_1.resolveSiteDataByRoute; } });
const debug = require('debug')('vitepress:config');
const resolve = (root, file) => path_1.default.resolve(root, `.vitepress`, file);
async function resolveConfig(root = process.cwd()) {
const userConfig = await resolveUserConfig(root);
const site = await resolveSiteData(root);
// resolve theme path
const userThemeDir = resolve(root, 'theme');
const themeDir = (await fs_extra_1.default.pathExists(userThemeDir))
? userThemeDir
: path_1.default.join(__dirname, '../client/theme-default');
const config = {
root,
site,
themeDir,
pages: await globby_1.default(['**.md'], { cwd: root, ignore: ['node_modules'] }),
configPath: resolve(root, 'config.js'),
outDir: resolve(root, 'dist'),
tempDir: path_1.default.resolve(resolver_1.APP_PATH, 'temp'),
resolver: resolver_1.createResolver(themeDir, userConfig)
};
return config;
}
exports.resolveConfig = resolveConfig;
async function resolveUserConfig(root) {
// load user config
const configPath = resolve(root, 'config.js');
const hasUserConfig = await fs_extra_1.default.pathExists(configPath);
// always delete cache first before loading config
delete require.cache[configPath];
const userConfig = hasUserConfig ? require(configPath) : {};
if (hasUserConfig) {
debug(`loaded config at ${chalk_1.default.yellow(configPath)}`);
}
else {
debug(`no config file found.`);
}
return userConfig;
}
exports.resolveUserConfig = resolveUserConfig;
async function resolveSiteData(root) {
const userConfig = await resolveUserConfig(root);
return {
lang: userConfig.lang || 'en-US',
title: userConfig.title || 'VitePress',
description: userConfig.description || 'A VitePress site',
base: userConfig.base ? userConfig.base.replace(/([^/])$/, '$1/') : '/',
head: userConfig.head || [],
themeConfig: userConfig.themeConfig || {},
locales: userConfig.locales || {}
};
}
exports.resolveSiteData = resolveSiteData;
//# sourceMappingURL=config.js.map