config.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.resolveSiteData = exports.resolveUserConfig = exports.resolveConfig = void 0;
  7. const path_1 = __importDefault(require("path"));
  8. const fs_extra_1 = __importDefault(require("fs-extra"));
  9. const chalk_1 = __importDefault(require("chalk"));
  10. const globby_1 = __importDefault(require("globby"));
  11. const resolver_1 = require("./resolver");
  12. var config_1 = require("./shared/config");
  13. Object.defineProperty(exports, "resolveSiteDataByRoute", { enumerable: true, get: function () { return config_1.resolveSiteDataByRoute; } });
  14. const debug = require('debug')('vitepress:config');
  15. const resolve = (root, file) => path_1.default.resolve(root, `.vitepress`, file);
  16. async function resolveConfig(root = process.cwd()) {
  17. const userConfig = await resolveUserConfig(root);
  18. const site = await resolveSiteData(root);
  19. // resolve theme path
  20. const userThemeDir = resolve(root, 'theme');
  21. const themeDir = (await fs_extra_1.default.pathExists(userThemeDir))
  22. ? userThemeDir
  23. : path_1.default.join(__dirname, '../client/theme-default');
  24. const config = {
  25. root,
  26. site,
  27. themeDir,
  28. pages: await globby_1.default(['**.md'], { cwd: root, ignore: ['node_modules'] }),
  29. configPath: resolve(root, 'config.js'),
  30. outDir: resolve(root, 'dist'),
  31. tempDir: path_1.default.resolve(resolver_1.APP_PATH, 'temp'),
  32. resolver: resolver_1.createResolver(themeDir, userConfig)
  33. };
  34. return config;
  35. }
  36. exports.resolveConfig = resolveConfig;
  37. async function resolveUserConfig(root) {
  38. // load user config
  39. const configPath = resolve(root, 'config.js');
  40. const hasUserConfig = await fs_extra_1.default.pathExists(configPath);
  41. // always delete cache first before loading config
  42. delete require.cache[configPath];
  43. const userConfig = hasUserConfig ? require(configPath) : {};
  44. if (hasUserConfig) {
  45. debug(`loaded config at ${chalk_1.default.yellow(configPath)}`);
  46. }
  47. else {
  48. debug(`no config file found.`);
  49. }
  50. return userConfig;
  51. }
  52. exports.resolveUserConfig = resolveUserConfig;
  53. async function resolveSiteData(root) {
  54. const userConfig = await resolveUserConfig(root);
  55. return {
  56. lang: userConfig.lang || 'en-US',
  57. title: userConfig.title || 'VitePress',
  58. description: userConfig.description || 'A VitePress site',
  59. base: userConfig.base ? userConfig.base.replace(/([^/])$/, '$1/') : '/',
  60. head: userConfig.head || [],
  61. themeConfig: userConfig.themeConfig || {},
  62. locales: userConfig.locales || {}
  63. };
  64. }
  65. exports.resolveSiteData = resolveSiteData;
  66. //# sourceMappingURL=config.js.map