Skip to content

VitePress ​

VitePress 是 Vue 团队维护的静态站点生成器 SSG,VuePress 的精神继任者,基于 Vite + Vue3,主打技术文档站,Markdown 写内容,输出纯静态 HTML,可以部署到任意静态托管平台(GitHub Pages、Netlify、Cloudflare Pages、Nginx等)。

核心模式:SSG预渲染 + 客户端SPA水合 首次访问输出完整静态HTML(SEO友好);页面跳转后变成SPA,无整页刷新,体验流畅。

VitePress技术栈 ​

  • 底层:Vite(构建) + Vue3(渲染) + markdown‑it(解析md) + Shiki(代码高亮)
  • 许可证:MIT,完全开源免费
  • 版本:1.x 稳定版;2.x 重大升级,构建性能大幅提升,支持增量构建、并行处理,适合大文档量项目。

VitePress目录结构(标准) ​

docs/
├─ .vitepress/          # 全部配置、主题、缓存,**不会被渲染成页面**
│  ├─ config.mjs        # 主配置文件(最重要)
│  ├─ theme/            # 自定义主题组件(可选)
│  └─ cache/            # 构建缓存
├─ index.md             # 首页,访问 /
├─ guide/
│  ├─ index.md
│  └─ quick.md
└─ api/
   └─ index.md

规则:docs下除 .vitepress 以外所有md文件都会生成页面。 文件系统路由:guide/quick.md → 访问地址 /guide/quick。

VitePress核心工作原理 ​

  1. 开发模式(dev) Vite 开发服务器,按需编译,修改md文件毫秒级HMR热更新,不用全量打包。

  2. 构建模式(build)

  • 把每一个 .md 文件编译成 Vue 组件;
  • 服务端预渲染输出静态 HTML;
  • 同时打包客户端JS,页面跳转时激活SPA;
  • 输出产物在 docs/.vitepress/dist,直接复制即可部署。

重要:所有页面在构建阶段就全部生成完成,运行时不再执行服务端逻辑。

两种页面生成方式 ​

  1. 物理md文件(最常用):磁盘上真实的 .md,适合你搭配 Decap CMS,CMS修改文件,CI自动构建。
  2. 动态路由 [xxx].paths.js:构建时拉取API/数据库,动态生成大量页面,没有物理md文件。

动态路由的缺点:页面越多,构建内存消耗越大,容易OOM,这也是之前提到上万页会吃力的根源。

VitePress内置核心能力 ​

1. Markdown 增强 ​

  • Frontmatter:页面元信息(title、description、tags),md头部---包裹;
  • 自定义容器:::: tip / warning / danger;
  • MD 内直接写 Vue 组件,这是VitePress一大特色,可以在文档嵌入交互组件;
  • Shiki 代码高亮,支持大量语言,可自定义主题;
  • 表格、列表、图片、链接、数学公式KaTeX、Mermaid流程图(需要插件)。

2. 默认主题(开箱即用文档主题) ​

  • 顶部导航栏 nav
  • 侧边栏 sidebar(原生不会自动生成,需要手动配置数组,这是很多人踩坑点)
  • 页面大纲(右侧目录)
  • 页脚、最后更新时间、编辑此页链接
  • 深色/浅色模式切换
  • 多语言 i18n 国际化配置

3. 搜索 ​

  • local:内置本地搜索(minisearch),浏览器端索引,页面越多索引越大,会消耗内存;
  • algolia:对接 Algolia DocSearch,适合大型站点,不需要本地构建索引。

4. 扩展能力 ​

  1. Vite插件体系:可以直接使用全部Vite生态插件;
  2. Markdown插件:扩展md语法;
  3. 自定义主题:完全重写布局,不使用官方默认主题;
  4. defineLoader:构建时加载本地json、数据文件;
  5. 动态路由:构建时拉外部接口批量生成页面。

VitePress命令 ​

bash
# 开发预览
pnpm docs:dev

# 构建静态产物
pnpm docs:build

# 本地预览构建后的dist
pnpm docs:preview

VitePress优点 ​

  1. 开发体验极好:Vite驱动,冷启动快,修改md即时刷新;
  2. Vue生态无缝:文档内直接使用Vue组件,Vue开发者上手成本极低;
  3. 轻量、无侵入:源码就是md文件,Git管理,完美适配 Decap/Sveltia CMS;
  4. SEO友好:输出静态HTML;
  5. 部署简单:dist静态文件,任意静态服务器都能跑;
  6. 2.x版本大幅优化大文档构建性能,增量构建、多核并行,缓解大量页面构建慢问题。

VitePress缺点与局限(重点,结合你前面的场景) ​

  1. 原生不会自动生成侧边栏:新增md不会自动加到sidebar,需要手动维护;社区插件vitepress-sidebar可以解决;
  2. 页面数量上限:物理md文件几千页尚可;上万页构建内存压力大,容易OOM;动态路由生成页面更吃内存;
  3. 没有内置文档版本管理(对比Docusaurus),多版本文档需要自己搭建多套目录;
  4. 自定义主题有一定学习成本,要懂Vue组件插槽;
  5. 没有内置CMS,内容编辑必须依赖外部Git‑CMS或者手动写md;
  6. 本地搜索在页面极多时,浏览器加载索引会变慢,建议切换Algolia。

适合:技术文档、手册、知识库,团队熟悉Vue,内容以md文件存放,希望Git版本控制。 不适合:大型博客、需要原生版本管理、十万级内容量。

VitePress和竞品对比 ​

框架底层优势短板
VitePressVite+Vue3开发快、Vue生态、md原生、轻量无版本管理、大页面构建压力
DocusaurusReactRSS、内置文档版本、插件丰富构建慢、React栈
Astro(Starlight)Astro多框架组件、极致静态性能Vue集成不如VitePress原生

VitePress结合你前面的需求总结 ​

  1. 你的场景:文档站,几千页,希望CMS后台编辑md,每个目录独立sidebar配置
    • VitePress 非常合适;搭配 Decap CMS / Sveltia CMS,直接修改仓库md与sidebar配置,CI自动构建;
  2. 注意点:
    • 优先使用物理md文件,尽量少用动态路由生成大量页面;
    • 页面超过5000,升级VitePress 2.x,加大Node内存;
    • 页面多了之后把本地搜索换成Algolia;
    • 侧边栏可以用每个目录独立sidebar.mjs,config中导入合并。

VitePress常见坑 ​

  1. 侧边栏不会自动生成,必须配置;
  2. 大量页面构建CI环境OOM:NODE_OPTIONS=--max-old-space-size=8192 加大内存;
  3. 动态路由生成大量页面,内存消耗远高于物理md;
  4. 本地搜索在页面很多时,浏览器卡顿,建议外置搜索;
  5. .vitepress目录内的文件不会渲染为网页。

VitePress官方站点 ​

  1. 官方网站(英文):https://vitepress.dev/
  2. 中文文档:https://vitepress.dev/zh/
  3. GitHub仓库:https://github.com/vuejs/vitepress
  4. 在线试玩(StackBlitz):StackBlitz文档页直接打开,浏览器内跑项目,不用本地安装

注意:VitePress 2.x是当前重点迭代版本,性能、增量构建大幅提升。

大厂/开源项目真实使用案例(官方生态) ​

这些项目直接使用VitePress构建文档站,可以作为参考范本:

  1. Vue.js 官方文档:自定义主题,多语言、大量Vue组件嵌入文档
  2. Vite 官方文档:VitePress原生默认主题
  3. Vitest(测试框架)文档:文档内嵌代码沙箱、交互式demo
  4. Pinia 状态管理文档
  5. VueUse 工具库文档
  6. UnoCSS、Iconify、Rollup、D3.js 官方文档

特点:大量使用md中嵌入Vue组件、代码示例、多语言、自定义主题。

VitePress社区优秀模板 & 项目 ​

1. 文档/知识库模板 ​

  • vitepress‑sidebar:自动生成侧边栏插件(解决手动写sidebar痛点,你之前关注的)
  • WPD:VitePress增强模板,内置Mermaid、时间线、图片缩放、评论、多语言,适合知识库/个人博客
  • vitepress‑theme‑element‑plus:Element‑Plus风格文档主题,支持demo预览容器

2. 个人博客/导航站模板 ​

  • vitepress‑nav‑template:个人导航主页模板,支持Tailwind、Giscus评论、访客统计

VitePress常用社区插件(高频) ​

插件用途
vitepress‑sidebar自动扫描md文件生成侧边栏,无需手动写数组
vitepress‑plugin‑tabs代码块多标签切换(Vue官方文档在用)
vitepress‑markdown‑mermaid支持Mermaid流程图渲染
vitepress‑markdown‑katex数学公式KaTeX支持
vitepress‑markdown‑timeline时间线语法扩展
vitepress‑search‑algolia对接Algolia DocSearch,替代本地搜索,适合大站点

提示:所有Vite插件都可以直接在VitePress中使用,因为底层是Vite。

VitePress学习资源 ​

  1. 官方指南(必看)
  2. 官方配置参考:https://vitepress.dev/zh/reference/site‑config
  3. 社区中文博客:掘金、CSDN大量VitePress实战,包括:分目录sidebar、Decap CMS集成、大文档优化、CI部署。

VitePress适合的业务场景 ​

✅ 技术项目文档、API手册、企业知识库、内部手册、个人笔记、轻量博客

❌ 不适合:十万级海量内容、需要原生版本管理、复杂动态业务网站