config.ts 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. import { createRequire } from 'module'
  2. import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
  3. const require = createRequire(import.meta.url)
  4. const pkg = require('vitepress/package.json')
  5. export default defineAdditionalConfig({
  6. lang: 'zh-Hans',
  7. description: '由 Vite 和 Vue 驱动的静态站点生成器',
  8. themeConfig: {
  9. nav: nav(),
  10. search: { options: searchOptions() },
  11. sidebar: {
  12. '/zh/guide/': { base: '/zh/guide/', items: sidebarGuide() },
  13. '/zh/reference/': { base: '/zh/reference/', items: sidebarReference() }
  14. },
  15. editLink: {
  16. pattern: 'https://github.com/vuejs/vitepress/edit/main/docs/:path',
  17. text: '在 GitHub 上编辑此页面'
  18. },
  19. footer: {
  20. message: '基于 MIT 许可发布',
  21. copyright: `版权所有 © 2019-${new Date().getFullYear()} 尤雨溪`
  22. },
  23. docFooter: {
  24. prev: '上一页',
  25. next: '下一页'
  26. },
  27. outline: {
  28. label: '页面导航'
  29. },
  30. lastUpdated: {
  31. text: '最后更新于'
  32. },
  33. notFound: {
  34. title: '页面未找到',
  35. quote:
  36. '但如果你不改变方向,并且继续寻找,你可能最终会到达你所前往的地方。',
  37. linkLabel: '前往首页',
  38. linkText: '带我回首页'
  39. },
  40. langMenuLabel: '多语言',
  41. returnToTopLabel: '回到顶部',
  42. sidebarMenuLabel: '菜单',
  43. darkModeSwitchLabel: '主题',
  44. lightModeSwitchTitle: '切换到浅色模式',
  45. darkModeSwitchTitle: '切换到深色模式',
  46. skipToContentLabel: '跳转到内容'
  47. }
  48. })
  49. function nav(): DefaultTheme.NavItem[] {
  50. return [
  51. {
  52. text: '指南',
  53. link: '/zh/guide/what-is-vitepress',
  54. activeMatch: '/zh/guide/'
  55. },
  56. {
  57. text: '参考',
  58. link: '/zh/reference/site-config',
  59. activeMatch: '/zh/reference/'
  60. },
  61. {
  62. text: pkg.version,
  63. items: [
  64. {
  65. text: '更新日志',
  66. link: 'https://github.com/vuejs/vitepress/blob/main/CHANGELOG.md'
  67. },
  68. {
  69. text: '参与贡献',
  70. link: 'https://github.com/vuejs/vitepress/blob/main/.github/contributing.md'
  71. }
  72. ]
  73. }
  74. ]
  75. }
  76. function sidebarGuide(): DefaultTheme.SidebarItem[] {
  77. return [
  78. {
  79. text: '简介',
  80. collapsed: false,
  81. items: [
  82. { text: '什么是 VitePress?', link: 'what-is-vitepress' },
  83. { text: '快速开始', link: 'getting-started' },
  84. { text: '路由', link: 'routing' },
  85. { text: '部署', link: 'deploy' }
  86. ]
  87. },
  88. {
  89. text: '写作',
  90. collapsed: false,
  91. items: [
  92. { text: 'Markdown 扩展', link: 'markdown' },
  93. { text: '资源处理', link: 'asset-handling' },
  94. { text: 'frontmatter', link: 'frontmatter' },
  95. { text: '在 Markdown 使用 Vue', link: 'using-vue' },
  96. { text: '国际化', link: 'i18n' }
  97. ]
  98. },
  99. {
  100. text: '自定义',
  101. collapsed: false,
  102. items: [
  103. { text: '自定义主题', link: 'custom-theme' },
  104. { text: '扩展默认主题', link: 'extending-default-theme' },
  105. { text: '构建时数据加载', link: 'data-loading' },
  106. { text: 'SSR 兼容性', link: 'ssr-compat' },
  107. { text: '连接 CMS', link: 'cms' }
  108. ]
  109. },
  110. {
  111. text: '实验性功能',
  112. collapsed: false,
  113. items: [
  114. { text: 'MPA 模式', link: 'mpa-mode' },
  115. { text: 'sitemap 生成', link: 'sitemap-generation' }
  116. ]
  117. },
  118. { text: '配置和 API 参考', base: '/zh/reference/', link: 'site-config' }
  119. ]
  120. }
  121. function sidebarReference(): DefaultTheme.SidebarItem[] {
  122. return [
  123. {
  124. text: '参考',
  125. items: [
  126. { text: '站点配置', link: 'site-config' },
  127. { text: 'frontmatter 配置', link: 'frontmatter-config' },
  128. { text: '运行时 API', link: 'runtime-api' },
  129. { text: 'CLI', link: 'cli' },
  130. {
  131. text: '默认主题',
  132. base: '/zh/reference/default-theme-',
  133. items: [
  134. { text: '概览', link: 'config' },
  135. { text: '导航栏', link: 'nav' },
  136. { text: '侧边栏', link: 'sidebar' },
  137. { text: '主页', link: 'home-page' },
  138. { text: '页脚', link: 'footer' },
  139. { text: '布局', link: 'layout' },
  140. { text: '徽章', link: 'badge' },
  141. { text: '团队页', link: 'team-page' },
  142. { text: '上下页链接', link: 'prev-next-links' },
  143. { text: '编辑链接', link: 'edit-link' },
  144. { text: '最后更新时间戳', link: 'last-updated' },
  145. { text: '搜索', link: 'search' },
  146. { text: 'Carbon Ads', link: 'carbon-ads' }
  147. ]
  148. }
  149. ]
  150. }
  151. ]
  152. }
  153. function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
  154. return {
  155. placeholder: '搜索文档',
  156. translations: {
  157. button: {
  158. buttonText: '搜索文档',
  159. buttonAriaLabel: '搜索文档'
  160. },
  161. modal: {
  162. searchBox: {
  163. resetButtonTitle: '清除查询条件',
  164. resetButtonAriaLabel: '清除查询条件',
  165. cancelButtonText: '取消',
  166. cancelButtonAriaLabel: '取消'
  167. },
  168. startScreen: {
  169. recentSearchesTitle: '搜索历史',
  170. noRecentSearchesText: '没有搜索历史',
  171. saveRecentSearchButtonTitle: '保存至搜索历史',
  172. removeRecentSearchButtonTitle: '从搜索历史中移除',
  173. favoriteSearchesTitle: '收藏',
  174. removeFavoriteSearchButtonTitle: '从收藏中移除'
  175. },
  176. errorScreen: {
  177. titleText: '无法获取结果',
  178. helpText: '你可能需要检查你的网络连接'
  179. },
  180. footer: {
  181. selectText: '选择',
  182. navigateText: '切换',
  183. closeText: '关闭',
  184. searchByText: '搜索提供者'
  185. },
  186. noResultsScreen: {
  187. noResultsText: '无法找到相关结果',
  188. suggestedQueryText: '你可以尝试查询',
  189. reportMissingResultsText: '你认为该查询应该有结果?',
  190. reportMissingResultsLinkText: '点击反馈'
  191. }
  192. }
  193. }
  194. }
  195. }