相关文章推荐
跳转到内容

站点配置 ​

站点配置可以定义站点的全局设置。应用配置选项适用于每个 VitePress 站点,无论它使用什么主题。例如根目录或站点的标题。

概览 ​

配置解析 ​

配置文件总是从 <root>/.vitepress/config.[ext] 解析,其中 <root> 是 VitePress 项目根目录 , [ext] 是支持的文件扩展名之一。开箱即用地支持 TypeScript。支持的扩展名包括 .js 、 .ts 、 .mjs 和 .mts 。

建议在配置文件中使用 ES 模块语法。配置文件应该默认导出一个对象:

异步的动态配置

如果需要动态生成配置,也可以默认导出一个函数,例如:

也可以在最外层使用 await 。例如:

配置智能提示 ​

使用 defineConfig 辅助函数将为配置选项提供 TypeScript 支持的智能提示。假设 IDE 支持它,那么在 JavaScript 和 TypeScript 中都将触发智能提示。

主题类型提示 ​

默认情况下, defineConfig 辅助函数期望默认主题的主题配置数据类型为:

如果使用自定义主题并希望对主题配置进行类型检查,则需要改用 defineConfigWithTheme ,并通过通用参数传递自定义主题的配置类型:

Vite、Vue 和 Markdown 配置 ​

  • Vite

    可以使用 VitePress 配置中的 vite 选项配置底层 Vite 实例。无需创建单独的 Vite 配置文件。

  • Vue

    VitePress 已经包含 Vite 的官方 Vue 插件 ( @vitejs/plugin-vue ),所以我们可以配置 VitePress 中的 vue 选项。

  • Markdown

    可以使用 VitePress 配置中的 markdown 选项配置底层的 Markdown-It 实例。

站点元数据 ​

title ​

  • 类型: string
  • 默认值: VitePress
  • 每个页面可以通过 frontmatter 覆盖

站点的标题。使用默认主题时,这将显示在导航栏中。

它还将用作所有单独页面标题的默认后缀,除非定义了 titleTemplate 。单个页面的最终标题将是其第一个 <h1> 标题的文本内容加上的全局 title 。例如使用以下配置和页面内容:

页面标题就是 Hello | My Awesome Site .

titleTemplate ​

  • 类型: string | boolean
  • 每个页面可以通过 frontmatter 覆盖

允许自定义每个页面的标题后缀或整个标题。例如:

页面标题就是 Hello | Custom Suffix .

要完全自定义标题的呈现方式,可以在 titleTemplate 中使用 :title 标识符:

这里的 :title 将替换为从页面的第一个 <h1> 标题推断出的文本。上一个示例页面的标题将是 Hello - Custom Suffix 。

该选项可以设置为 false 以禁用标题后缀。

description ​

  • 类型: string
  • 默认值: A VitePress site
  • 每个页面可以通过 frontmatter 覆盖

站点的描述。这将呈现为页面 HTML 中的 <meta> 标签。

  • 类型: HeadConfig[]
  • 默认值: []
  • 可以通过 frontmatter 为每个页面追加

要在页面 HTML 的 <head> 标签中呈现的其他元素。用户添加的标签在结束 head 标签之前呈现,在 VitePress 标签之后。

示例:添加一个图标 ​

示例:添加谷歌字体 ​

示例:添加一个 serviceWorker ​

示例:使用谷歌分析 ​

lang ​

  • 类型: string
  • 默认值: en-US

站点的 lang 属性。这将呈现为页面 HTML 中的 <html lang="en-US"> 标签。

base ​

  • 类型: string
  • 默认值: /

站点将部署到的 base URL。如果计划在子路径例如 GitHub 页面下部署站点,则需要设置此项。如果计划将站点部署到 https://foo.github.io/bar/ ,那么应该将 base 设置为 '/bar/' 。它应该始终以 / 开头和结尾。

base 会自动添加到其他选项中以 / 开头的所有 URL 前面,因此只需指定一次。

路由 ​

cleanUrls ​

  • 类型: boolean
  • 默认值: false

当设置为 true 时,VitePress 将从 URL 中删除 .html 后缀。另请参阅 生成简洁的 URL 。

需要服务器支持

要启用此功能,可能需要在托管平台上进行额外配置。要使其正常工作,服务器必须能够在 不重定向的情况下 访问 /foo 时提供 /foo.html 。

rewrites ​

  • 类型: Record<string, string>

自定义目录 <-> URL 映射。详细信息请参阅 路由:路由重写 。

构建 ​

srcDir ​

  • 类型: string
  • 默认值: .

相对于项目根目录的 markdown 文件所在的文件夹。另请参阅 根目录和源目录 。

srcExclude ​

  • 类型: string
  • 默认值: undefined

用于匹配应排除作为源内容输出的 markdown 文件,语法详见 glob pattern 。

outDir ​

  • 类型: string
  • 默认值: ./.vitepress/dist

项目的构建输出位置,相对于 项目根目录 。

assetsDir ​

  • 类型: string
  • 默认值: assets

指定放置生成的静态资源的目录。该路径应位于 outDir 内,并相对于它进行解析。

cacheDir ​

  • 类型: string
  • 默认值: ./.vitepress/cache

缓存文件的目录,相对于 项目根目录 。另请参阅: cacheDir 。

  • 类型: boolean | 'localhostLinks' | (string | RegExp | ((link: string, source: string) => boolean))[]
  • 默认值: false

当设置为 true 时,VitePress 不会因为死链而导致构建失败。

当设置为 'localhostLinks' ,出现死链时构建将失败,但不会检查 localhost 链接。

它也可以是一组精确的 url 字符串、正则表达式模式或自定义过滤函数。

metaChunk experimental ​

  • 类型: boolean
  • 默认值: false

当设置为 true 时,将页面元数据提取到单独的 JavaScript 块中,而不是内联在初始 HTML 中。这使每个页面的 HTML 负载更小,并使页面元数据可缓存,从而当站点中有很多页面时可以减少服务器带宽。

mpa experimental ​

  • 类型: boolean
  • 默认值: false

设置为 true 时,生产应用程序将在 MPA 模式 下构建。MPA 模式默认提供 零 JavaScript 支持,代价是禁用客户端导航,并且需要明确选择加入才能进行交互。

主题 ​

appearance ​

  • 类型: boolean | 'dark' | 'force-dark' | import('@vueuse/core').UseDarkOptions
  • 默认值: true

是否启用深色模式 (通过将 .dark 类添加到 <html> 元素)。

  • 如果该选项设置为 true ,则默认主题将由用户的首选配色方案决定。
  • 如果该选项设置为 dark ,则默认情况下主题将是深色的,除非用户手动切换它。
  • 如果该选项设置为 false ,用户将无法切换主题。

此选项注入一个内联脚本,使用 vitepress-theme-appearance key 从本地存储恢复用户设置。这确保在呈现页面之前应用 .dark 类以避免闪烁。

appearance.initialValue 只能是 'dark' | undefined 。 不支持 Refs 或 getters。

lastUpdated ​

  • 类型: boolean
  • 默认值: false

是否使用 Git 获取每个页面的最后更新时间戳。时间戳将包含在每个页面的页面数据中,可通过 useData 访问。

使用默认主题时,启用此选项将显示每个页面的最后更新时间。可以通过 themeConfig.lastUpdatedText 选项自定义文本。

自定义 ​

markdown ​

  • 类型: MarkdownOption

配置 Markdown 解析器选项。VitePress 使用 Markdown-it 作为解析器,使用 Shiki 来高亮不同语言语法。在此选项中,可以传递各种 Markdown 相关选项以满足你的需要。

查看 类型声明和 jsdocs 以获得所有可配置的选项。

vite ​

  • 类型: import('vite').UserConfig

将原始 Vite 配置 传递给内部 Vite 开发服务器 / bundler。

vue ​

  • 类型: import('@vitejs/plugin-vue').Options

将原始的 @vitejs/plugin-vue 选项 传递给内部插件实例。

构建钩子 ​

VitePress 构建钩子允许向站点添加新功能和行为:

  • Sitemap
  • Search Indexing
  • PWA
  • Teleport

buildEnd ​

  • 类型: (siteConfig: SiteConfig) => Awaitable<void>

buildEnd 是一个构建 CLI 钩子,它将在构建 SSG 完成后但在 VitePress CLI 进程退出之前运行。

postRender ​

  • 类型: (context: SSGContext) => Awaitable<SSGContext | void>

postRender 是一个构建钩子,在 SSG 渲染完成时调用。它将允许在 SSG 期间处理传递的内容。

transformHead ​

  • 类型: (context: TransformContext) => Awaitable<HeadConfig[]>

transformHead 是一个构建钩子,用于在生成每个页面之前转换 head。它将允许添加无法静态添加到 VitePress 配置中的 head entries。只需要返回额外的 entries,它们将自动与现有 entries 合并。

WARNING

不要改变 context 中的任何东西。

请注意,仅在静态生成站点时才会调用此钩子。在开发期间不会调用它。如果需要在开发期间添加动态 head 条目,可以使用 transformPageData 钩子来替代:

transformHtml ​

  • 类型: (code: string, id: string, context: TransformContext) => Awaitable<string | void>

transformHtml 是一个构建钩子,用于在保存到磁盘之前转换每个页面的内容。

WARNING

不要改变 context 中的任何东西。另外,修改 html 内容可能会导致运行时出现激活问题。

transformPageData ​

  • 类型: (pageData: PageData, context: TransformPageContext) => Awaitable<Partial<PageData> | { [key: string]: any } | void>

transformPageData 是一个钩子,用于转换每个页面的 pageData 。可以直接改变 pageData 或返回将合并到 PageData 中的更改值。

WARNING

不要改变 context 中的任何东西。请注意,这可能会影响开发服务器的性能,特别是当在钩子中有一些网络请求或大量计算 (例如生成图像) 时。可以通过判断 process.env.NODE_ENV === 'production' 匹配符合条件的情况。

 
推荐文章