VitePress 部署完全指南:从本地构建、路径配置到主流平台一键上线
前端文档【免费下载链接】vitepressVite Vue powered static site generator.项目地址https://gitcode.com/gh_mirrors/vi/vitepress点击查看免费下载VitePress 是一个基于 Vite 与 Vue 的静态站点生成器它把 Markdown 文档编译为纯静态的 HTML、CSS 与 JS 产物天然适合部署到各类静态托管平台。本文以仓库内 docs/fa/guide/deploy.md 为骨架系统讲解 VitePress 站点的本地构建与预览、公共基础路径base配置、HTTP 缓存头优化以及 Netlify、Vercel、GitHub Pages、GitLab Pages、Firebase、Nginx 等主流平台的完整上线流程并结合仓库源码CLI 入口、预览服务器、站点配置解析说明底层机制帮助你一次性掌握从npm run docs:build到生产环境稳定运行的完整链路。部署前的共同假设官方部署指南基于以下三个约定请先确认你的项目满足这些前提站点源码位于项目的docs目录下即 Markdown 源文件都放在docs中使用默认的构建输出目录.vitepress/distVitePress 以本地依赖安装并在 package.json 中配置了如下脚本{ scripts: { docs:build: vitepress build docs, docs:preview: vitepress preview docs } }其中docs:build负责把docs目录编译为静态产物docs:preview负责在本地以生产模式预览构建结果。命令解析逻辑位于 src/node/cli.tsCLI 通过minimist解析参数识别build、serve别名preview、dev、init等子命令并把build交给构建流程、把serve/preview交给 src/node/serve/serve.ts 的serve()函数处理。本地构建与测试1. 构建文档$ npm run docs:build该命令会执行vitepress build docs将 Markdown 渲染为静态 HTML并把 JS/CSS 等资源打包到docs/.vitepress/distoutDir的默认解析见 src/node/config.ts 中的resolve(root, dist)。2. 本地预览构建产物$ npm run docs:previewpreview命令会启动一个本地静态服务器将输出目录.vitepress/dist通过http://localhost:4173提供服务。部署前先用它检查页面渲染是否符合预期可以有效避免把问题带到生产环境。从源码看默认端口4173定义在 src/node/serve/serve.tsconst port options.port ?? 4173。预览服务器基于polkasirv实现对assets/目录下的指纹资源设置maxAge: 31536000, immutable对非资源文件强制cache-control: no-cache促使浏览器每次向服务器校验避免未带哈希的文件被长期缓存请求不存在的路径时回退到构建产物中的404.html若配置了非根base还会把/请求 302 重定向到/{base}/。3. 自定义端口可以通过--port参数指定端口{ scripts: { docs:preview: vitepress preview docs --port 8080 } }此时docs:preview会在http://localhost:8080启动服务器。--port参数最终会传入serve()的options.port见 src/node/serve/serve.ts 的ServeOptions接口。设置公共基础路径base默认情况下VitePress 假设站点部署在域名根路径/下。如果你的站点需要部署在子路径例如https://mywebsite.com/blog/就必须在 VitePress 配置中把base设置为/blog/。示例如果使用 GitHub Pages或 GitLab Pages并部署到user.github.io/repo/则应将base设为/repo/。base选项的语义在 src/node/siteConfig.ts 中有明确注释它表示站点部署的基础 URL通常以斜杠开头和结尾默认值为/。base会作用于页面链接、withBase生成的链接、public/目录文件以及hashmap.json等是子路径部署时最容易出错也最关键的一项配置。可迁移构建相对 base如果站点最终 URL 在构建时不可预知例如部署到 IPFS 网关、共享文件夹、或需要打进某个应用可以把base设为./export default { base: ./ }此时每个页面都会以自身位置为基准引用资源和其他页面客户端运行时会根据实际加载的 URL 恢复真实挂载点同一份构建产物可以不经重新构建地部署到任意子路径。isRelativeBase的实现见 src/shared/shared.tsbase ./预览服务器在遇到相对 base 时也会回退到根路径挂载见 src/node/serve/serve.ts。需要注意相对 base 下应保持cleanUrls关闭默认即关闭因为可迁移产物需要以.html结尾的链接且cleanUrls配合相对 base 构建时 src/node/config.ts 会给出警告。HTTP 缓存头优化生产构建会对静态资源JS、CSS 及其他不在public中的导入资源使用哈希文件名。用浏览器开发者工具的 Network 面板查看生产预览会看到类似app.4f283b18.js的文件。4f283b18这个哈希由文件内容生成内容不变则 URL 不变内容一变 URL 必变。因此可以放心地对这些文件使用最强缓存头。所有此类文件都会放在输出目录的assets/子目录下只需对该目录配置Cache-Control: max-age31536000,immutableNetlify 示例_headers文件/assets/* cache-control: max-age31536000 cache-control: immutable注意_headers文件应放在 public 目录本例为docs/public/_headers中构建时它才会被原样复制到输出目录。Vercel 示例配置vercel.json{ headers: [ { source: /assets/(.*), headers: [ { key: Cache-Control, value: max-age31536000, immutable } ] } ] }注意vercel.json应放在仓库根目录。值得补充的是VitePress 内置的预览服务器已经实现了与上述一致的缓存策略——src/node/serve/serve.ts 对assets/下的指纹资源直接返回maxAge: 31536000, immutable对非资源文件则返回no-cache。这说明指纹资源长缓存、非指纹资源强制校验是官方推荐的标准缓存模型你可以照此在自己的生产服务器上复刻。平台部署指南Netlify / Vercel / Cloudflare Pages / AWS Amplify / Render新建项目后在对应平台的控制台配置以下参数构建命令Build Commandnpm run docs:build输出目录Output Directorydocs/.vitepress/distNode 版本20或更高::: warning 警告 不要启用Auto MinifyHTML 自动压缩之类的选项。这类工具会移除输出 HTML 中对 Vue 有意义的注释一旦被移除运行时可能出现水合hydration不匹配错误。 :::GitHub Pages在项目的.github/workflows目录下创建deploy.yml文件内容如下# 构建并部署 VitePress 站点到 GitHub Pages 的示例工作流 # name: Deploy VitePress site to Pages on: # 在推送到 main 分支时触发。如果你的默认分支是 master请改为 master。 push: branches: [main] # 允许从 Actions 标签页手动运行该工作流 workflow_dispatch: # 授予 GITHUB_TOKEN 部署到 GitHub Pages 所需的权限 permissions: contents: read pages: write id-token: write # 只允许一个并发部署跳过排队中的运行但不要取消正在进行的部署 concurrency: group: pages cancel-in-progress: false jobs: # 构建任务 build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkoutv5 with: fetch-depth: 0 # 未启用 lastUpdated 时不需要 # - uses: pnpm/action-setupv4 # 使用 pnpm 时取消注释 # with: # version: 9 # 已在 package.json 中设置 packageManager 时不需要 # - uses: oven-sh/setup-bunv1 # 使用 Bun 时取消注释 - name: Setup Node uses: actions/setup-nodev6 with: node-version: 24 cache: npm # 或 pnpm / yarn - name: Cache VitePress uses: actions/cachev4 with: path: docs/.vitepress/cache key: ${{ runner.os }}-vitepress-${{ hashFiles(docs/**, package-lock.json, pnpm-lock.yaml, yarn.lock, bun.lockb) }} restore-keys: | ${{ runner.os }}-vitepress- - name: Setup Pages uses: actions/configure-pagesv4 - name: Install dependencies run: npm ci # 或 pnpm install / yarn install / bun install - name: Build with VitePress run: npm run docs:build # 或 pnpm docs:build / yarn docs:build / bun run docs:build - name: Upload artifact uses: actions/upload-pages-artifactv3 with: path: docs/.vitepress/dist # 部署任务 deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} needs: build runs-on: ubuntu-latest name: Deploy steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pagesv4::: warning 警告 请确保 VitePress 的base选项已正确配置详见上文设置公共基础路径一节。 :::在仓库 Settings 的 Pages 菜单项下于 Build and deployment Source 中选择 GitHub Actions。将改动推送到main分支并等待 GitHub Actions 工作流完成。根据你的设置站点会部署到https://username.github.io/[repository]/或https://custom-domain/此后每次推送到main分支都会自动重新部署。GitLab Pages将 VitePress 配置中的outDir设置为../public。如果希望部署到https://username.gitlab.io/repository/还需把base设为/repository/如果使用自定义域名、用户或组织 Pages或在 GitLab 中开启了 Use unique domain 设置则无需base。在项目根目录创建.gitlab-ci.yml内容如下。它会在内容发生变化时自动构建并发布站点image: node:24 pages: cache: paths: - node_modules/ script: # - apk add git # 使用 alpine 等小型镜像且启用了 lastUpdated 时取消注释 - npm install - npm run docs:build artifacts: paths: - public only: - main注意outDir之所以要改为../public是因为 GitLab Pages 约定把public目录作为发布根目录outDir在 src/node/config.ts 中的默认值是项目根下的dist这里需要显式覆盖。Azure Static Web Apps遵循 Azure Static Web Apps 官方构建配置文档 的操作步骤。在配置文件中设置以下值不需要的项如api_location直接删除app_location/output_locationdocs/.vitepress/distapp_build_commandnpm run docs:buildCloudRay可以按照 CloudRay 官方部署 VitePress 的指引 将 VitePress 项目发布到 CloudRay。Firebase在项目根目录创建firebase.json与.firebasercfirebase.json{ hosting: { public: docs/.vitepress/dist, ignore: [] } }.firebaserc{ projects: { default: YOUR_FIREBASE_ID } }先执行npm run docs:build完成构建再执行部署命令firebase deployHeroku遵循heroku-buildpack-static中的文档与指南。在项目根目录创建static.json{ root: docs/.vitepress/dist }Hostinger可以按照 Hostinger 的 Node.js 网站部署说明 将 VitePress 项目发布到 Hostinger。配置构建设置时选择VitePress作为框架并把根目录root directory调整为./docs。Kinsta可以按照 Kinsta 的 VitePress 静态站点示例文档 将 VitePress 网站发布到 Kinsta。Stormkit可以按照 Stormkit 的 VitePress 部署说明 将 VitePress 项目发布到 Stormkit。Surge先执行npm run docs:build完成构建再运行npx surge docs/.vitepress/dist将docs/.vitepress/dist目录发布到 Surge。Nginx下面是一份 Nginx server 块配置示例。它包含针对常见文本类资源的 gzip 压缩、VitePress 静态文件的正确缓存头以及对cleanUrls: true的处理server { gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xmlrss text/javascript; listen 80; server_name _; index index.html; location / { # 内容所在位置 root /app; # 精确匹配 - clean urls 反向 - 目录 - 404 try_files $uri $uri.html $uri/ 404; # 不存在的页面 error_page 404 /404.html; # 无 index.html 的目录在此配置下会返回 403 error_page 403 /404.html; # 调整缓存头 # assets 目录中的文件均带哈希文件名 location ~* ^/assets/ { expires 1y; add_header Cache-Control public, immutable; } } }该配置假设构建产物位于服务器的/app目录如果你的站点文件在别处请用相应的root指令调整路径。::: warning 警告try_files的配置不要像其他 Vue 应用那样默认回退到index.html否则会导致页面状态路由失效。 :::如需更多信息可查阅 nginx 官方文档、相关讨论如 vuejs/vitepress 的 discussion #2837、issue #3235以及 Mehdi Merah 关于 VitePress cleanUrls 与 Nginx 环境的博客文章。部署排查要点样式/资源 404绝大多数是base未配置或配置错误。子路径部署务必确认base与平台 URL 前缀一致如 GitHub Pages 的/repo/相对 base./场景请保持cleanUrls关闭。水合错误检查平台是否启用了 HTML Auto Minify它会删除 Vue 需要的注释参见上文通用平台配置中的警告。lastUpdated不生效GitHub Actions 的 checkout 步骤需要fetch-depth: 0工作流中已带注释说明使用 alpine 等小型 Docker 镜像的 GitLab CI 则需要apk add git.gitlab-ci.yml中已预留注释。缓存不更新确认assets/使用了长缓存max-age31536000, immutable而 HTML 等非指纹文件未被强缓存这与 src/node/serve/serve.ts 内置预览服务器的行为保持一致。Node 版本各平台示例要求 Node20或更高GitHub Actions 工作流与 GitLab CI 镜像分别使用24请保证平台 Node 版本满足要求。至此你已经掌握了 VitePress 站点从本地构建、路径配置、缓存优化到多平台部署的完整方案。以 docs/fa/guide/deploy.md 为对照结合 src/node/cli.ts、src/node/serve/serve.ts 与 src/node/siteConfig.ts 等源码阅读可以进一步深入理解每一步背后的实现细节。赞分享前端文档【免费下载链接】vitepressVite Vue powered static site generator.项目地址https://gitcode.com/gh_mirrors/vi/vitepress点击查看免费下载相关推荐LivePortrait全平台部署指南从环境配置到动画生成的完整路径LivePortrait全平台部署指南从环境配置到动画生成的完整路径 LivePortrait作为一款高效的人像动画工具支持将静态肖像转化为生动的动态效果人工智能计算机视觉媒体生成数字人DGIOT平台部署完全指南从CentOS一键安装到生产环境配置DGIOT平台部署完全指南从CentOS一键安装到生产环境配置 DGIOT作为国内首个轻量级开源工业物联网平台为企业提供了从设备接入到数据分析的完整解决方案物联网后端消息队列Cube Sandbox 本地构建部署全指南从源码打包到单机一键部署Cube Sandbox 本地构建部署全指南从源码打包到单机一键部署 Cube Sandbox 是面向 AI Agent 的即时、高并发、安全且轻量的沙箱平台Agent 沙箱虚拟化云原生人工智能后端容器运行时上一篇Skia文本字距微调终极指南像素级对齐与视觉平衡的艺术下一篇如何利用Jigsaw-Payment构建高并发支付服务性能优化实践分享创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

金融模型审计技能 audit-xls 深度解析:从公式级检查到三表勾稽完整性校验

金融模型审计技能 audit-xls 深度解析:从公式级检查到三表勾稽完整性校验

人工智能AI 应用AI 技能/插件AI Agent金融科技 【免费下载链接】financial-services 项目地址: https://gitcode.com/GitHub_Trending/fi/financial-services 点击查看 免费下载 在 Claude for Financial Services 开源仓库中,audit-xls 是贯穿投资银行…

2026/9/21 16:41:42 阅读更多 →
Relay 缓存复用完全指南:fetchPolicy、数据可用性与部分渲染实战

Relay 缓存复用完全指南:fetchPolicy、数据可用性与部分渲染实战

Relay 缓存复用完全指南:fetchPolicy、数据可用性与部分渲染实战 【免费下载链接】relay Relay is a JavaScript framework for building data-driven React applications. 项目地址: https://gitcode.com/gh_mirrors/relay29/relay Relay 在应用运行过程中会…

2026/9/21 16:41:42 阅读更多 →
Ragas Improve RAG 实战:用真实评测数据对比朴素 RAG 与 Agentic RAG

Ragas Improve RAG 实战:用真实评测数据对比朴素 RAG 与 Agentic RAG

人工智能大模型模型评测RAG 【免费下载链接】ragas Supercharge Your LLM Application Evaluations 🚀 项目地址: https://gitcode.com/gh_mirrors/ra/ragas 点击查看 免费下载 ragas quickstart improve_rag 是 Ragas 提供的一个开箱即用的评测模板&am…

2026/9/21 16:41:42 阅读更多 →

最新新闻

AWX Unified Job Stdout API 指南:format 参数、行区间截取与超大输出处理

AWX Unified Job Stdout API 指南:format 参数、行区间截取与超大输出处理

AWX Unified Job Stdout API 指南:format 参数、行区间截取与超大输出处理 【免费下载链接】awx AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automati…

2026/9/21 17:11:51 阅读更多 →
Polybar Actions 完整指南:动作字符串格式、触发方式与模块动作详解

Polybar Actions 完整指南:动作字符串格式、触发方式与模块动作详解

桌面应用 【免费下载链接】polybar A fast and easy-to-use status bar 项目地址: https://gitcode.com/gh_mirrors/po/polybar 点击查看 免费下载 Actions(动作)是 polybar 用于触发模块特定行为的一套机制——无论是点击音量模块时静音/取…

2026/9/21 17:11:51 阅读更多 →
Moya 多部分上传(Multipart Upload)完全指南:MultipartFormData 与两种参数传递方案

Moya 多部分上传(Multipart Upload)完全指南:MultipartFormData 与两种参数传递方案

Moya 多部分上传(Multipart Upload)完全指南:MultipartFormData 与两种参数传递方案 【免费下载链接】Moya Network abstraction layer written in Swift. 项目地址: https://gitcode.com/gh_mirrors/mo/Moya 导读 本文基于 Moya 官方…

2026/9/21 17:11:51 阅读更多 →
Java与ABAP标记接口设计模式对比与实践

Java与ABAP标记接口设计模式对比与实践

1. 项目概述:当代码需要"暗号"时在面向对象编程的世界里,我们常常会遇到这样的场景:某些类需要被特殊对待,但又不想通过继承体系或显式接口来暴露这种特殊性。就像特种部队成员需要隐藏身份但内部又能快速识别一样&…

2026/9/21 17:10:50 阅读更多 →
C#与OpenClaw构建自动化商业闭环系统

C#与OpenClaw构建自动化商业闭环系统

1. 项目概述:C#与OpenClaw的自动化商业闭环在当今数字化浪潮中,一人公司(One Person Company,简称OPC)的运营模式正在经历革命性变革。传统需要多人协作完成的业务流程,现在通过智能自动化工具完全可以由单…

2026/9/21 17:10:50 阅读更多 →
DeepSeek Harness 首次启动引导演进:移除内测 Beta 通知的决策、遥测默认关闭与 settings.onboarding 缝合点设计

DeepSeek Harness 首次启动引导演进:移除内测 Beta 通知的决策、遥测默认关闭与 settings.onboarding 缝合点设计

人工智能AI AgentAgent 框架DeepSeek 【免费下载链接】deepseek-harness DeepSeek Harness: Everything is a Plugin. 项目地址: https://gitcode.com/gh_mirrors/de/deepseek-harness 点击查看 免费下载 本文依据 DeepSeek Harness 仓库中已归档的技术决策记录 20…

2026/9/21 17:09:49 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →