部署平台
选择合适的部署平台,将你的 VitePress 站点发布上线。
平台对比
| 平台 | 免费额度 | 国内访问 | 自定义域名 | CI/CD | 特点 |
|---|---|---|---|---|---|
| Vercel | 100GB/月 | ⚠️ 较慢 | ✅ | ✅ | 最流行,预览部署 |
| Netlify | 100GB/月 | ⚠️ 较慢 | ✅ | ✅ | 功能丰富 |
| GitHub Pages | 100GB/月 | ⚠️ 较慢 | ✅ | ✅ | 免费集成 GitHub |
| Cloudflare Pages | 无限 | ✅ 快速 | ✅ | ✅ | 全球 CDN,国内快 |
| 腾讯云 EdgeOne | 有免费额度 | ✅ 快速 | ✅ | ✅ | 国内企业首选 |
| Railway | $5/月额度 | ✅ 快速 | ✅ | ✅ | 现代化托管 |
| Zeabur | 有免费额度 | ✅ 快速 | ✅ | ✅ | 简单易用 |
选择建议
| 场景 | 推荐 | 原因 |
|---|---|---|
| 个人博客 | Vercel | 免费、简单 |
| 开源项目 | GitHub Pages | 免费集成 |
| 国内用户 | Cloudflare / EdgeOne | 访问快速 |
| 企业站点 | 自托管 / EdgeOne | 可控性高 |
| 快速部署 | Zeabur | 简单易用 |
| 多环境部署 | Netlify | 预览部署完善 |
通用构建配置
所有平台的核心配置都相同:
| 配置项 | 值 |
|---|---|
| Build Command | npm run docs:build |
| Output Directory | docs/.vitepress/dist |
| Node.js 版本 | 18+ |
| Install Command | npm ci |
Vercel
最流行的前端部署平台,零配置部署 VitePress。
自动部署
- 访问 Vercel 使用 GitHub 登录
- 点击 "New Project" 导入仓库
- Framework Preset 选择 VitePress(自动识别)
- 点击 "Deploy" 完成部署
vercel.json 配置
VitePress 使用 clean URLs,需要配置路由重写:
json
{
"cleanUrls": true,
"headers": [
{
"source": "/assets/(.*)",
"headers": [
{ "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
]
},
{
"source": "/(.*)",
"headers": [
{ "key": "X-Content-Type-Options", "value": "nosniff" },
{ "key": "X-Frame-Options", "value": "DENY" },
{ "key": "X-XSS-Protection", "value": "1; mode=block" }
]
}
]
}环境变量
在 Vercel 项目设置中添加环境变量:
| 变量名 | 说明 |
|---|---|
NODE_VERSION | 20 |
VITE_API_URL | API 地址 |
预览部署
Vercel 自动为每个 PR 创建预览部署,方便团队审阅。
GitHub Pages
免费、稳定,与 GitHub 仓库深度集成。
GitHub Actions 部署
yaml
# .github/workflows/deploy.yml
name: Deploy VitePress site to Pages
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm run docs:build
- uses: actions/upload-pages-artifact@v3
with:
path: docs/.vitepress/dist
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4子路径部署
部署到 https://username.github.io/repo/ 时需要配置 base:
ts
// .vitepress/config.mts
export default defineConfig({
base: '/repo-name/'
})自定义域名
- 在仓库 Settings > Pages > Custom domain 添加域名
- 在域名 DNS 添加 CNAME 记录指向
username.github.io - 勾选 "Enforce HTTPS"
Cloudflare Pages
全球 CDN 加速,国内访问速度优秀。
自动部署
- 访问 Cloudflare Pages 连接 Git 仓库
- 配置构建命令和输出目录
- 点击 "Save and Deploy"
自定义构建配置
| 配置项 | 值 |
|---|---|
| Build command | npm run docs:build |
| Build output directory | docs/.vitepress/dist |
| Node.js version | 20(环境变量 NODE_VERSION) |
_redirects 配置
VitePress 使用 clean URLs,需要配置重定向:
# public/_redirects
# 处理不带 .html 后缀的 URL
/posts/* /posts/*/:splat 200_headers 配置
# public/_headers
/assets/*
Cache-Control: public, max-age=31536000, immutable
/*
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block预览部署
Cloudflare Pages 为每个 PR 自动创建预览部署,URL 格式为 <commit-hash>.<project>.pages.dev。
Netlify
功能丰富的前端部署平台,支持表单处理和 Serverless Functions。
自动部署
- 访问 Netlify 连接 Git 仓库
- 配置构建命令和输出目录
- 点击 "Deploy site"
netlify.toml 配置
toml
[build]
command = "npm run docs:build"
publish = "docs/.vitepress/dist"
[[headers]]
for = "/assets/*"
[headers.values]
Cache-Control = "public, max-age=31536000, immutable"
[[headers]]
for = "/*"
[headers.values]
X-Content-Type-Options = "nosniff"
X-Frame-Options = "DENY"
X-XSS-Protection = "1; mode=block"
Referrer-Policy = "strict-origin-when-cross-origin"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
conditions = { Language = ["en"] }表单处理
Netlify 内置表单处理,无需后端:
html
<form name="contact" method="POST" data-netlify="true">
<input type="text" name="name" required />
<input type="email" name="email" required />
<textarea name="message" required></textarea>
<button type="submit">提交</button>
</form>腾讯云 EdgeOne
国内企业首选,国内访问速度极快。
部署步骤
- 登录 EdgeOne 控制台
- 创建站点并绑定域名
- 配置源站或使用 EdgeOne Pages 直接部署
- 配置 SSL 证书
CNB 自动部署
项目使用 CNB (Cloud Native Build) 自动化部署到 EdgeOne:
yaml
# .cnb.yml
main:
push:
- docker:
image: node:20-alpine
stages:
- name: build
script:
- npm ci
- npm run docs:build
- name: deploy
script:
- npx @cloudbase/cli deploy --dist docs/.vitepress/distRailway
现代化托管平台,支持多服务部署。
部署步骤
- 访问 Railway 连接 Git 仓库
- 配置构建命令和输出目录
- 自动部署
railway.json 配置
json
{
"build": {
"builder": "NIXPACKS",
"buildCommand": "npm run docs:build"
},
"deploy": {
"startCommand": "npx serve docs/.vitepress/dist -s -l $PORT"
}
}Zeabur
简单易用的部署平台,自动检测项目类型。
部署步骤
- 访问 Zeabur 导入 Git 仓库
- 自动检测 VitePress 项目并配置
- 一键部署
自托管服务器
适合需要完全控制的场景。
Nginx 配置
nginx
server {
listen 80;
server_name your-site.com;
root /var/www/vitepress/dist;
# 安全头
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "strict-origin-when-cross-origin";
# Gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript image/svg+xml;
gzip_min_length 1000;
# 静态资源长缓存
location /assets/ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# SPA 路由回退
location / {
try_files $uri $uri/ $uri.html /index.html;
}
# 404 页面
error_page 404 /404.html;
}
# HTTPS 配置
server {
listen 443 ssl http2;
server_name your-site.com;
ssl_certificate /etc/letsencrypt/live/your-site.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-site.com/privkey.pem;
# ... 其他配置同上
}Docker 部署
多阶段构建
dockerfile
# Dockerfile
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run docs:build
FROM nginx:alpine
COPY --from=builder /app/docs/.vitepress/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]Docker Compose
yaml
# docker-compose.yml
version: '3.8'
services:
vitepress:
build: .
ports:
- "8080:80"
restart: unless-stopped自动化部署脚本
bash
#!/bin/bash
# deploy.sh
set -e
echo "📦 拉取最新代码..."
git pull origin main
echo "🏗️ 构建站点..."
npm ci
npm run docs:build
echo "🚀 重启 Docker 容器..."
docker compose up -d --build
echo "✅ 部署完成!"CDN 加速
推荐使用国内 CDN 加速静态资源:
| CDN | 特点 |
|---|---|
| Cloudflare | 免费,全球节点 |
| 腾讯云 CDN | 国内加速效果好 |
| 阿里云 CDN | 稳定,节点多 |
| 七牛云 | 免费额度大 |
部署检查清单
部署前确保以下项目已完成:
内容检查
- [ ] 所有页面链接有效
- [ ] 图片资源正确引用
- [ ] 搜索功能正常
- [ ] 多语言页面完整
性能检查
- [ ] 构建无错误无警告
- [ ] 页面 Lighthouse 评分 > 90
- [ ] 图片已压缩优化
- [ ] 启用 Gzip/Brotli 压缩
安全检查
- [ ] HTTPS 已配置
- [ ] 安全头已添加
- [ ] 无敏感信息泄露
- [ ] 依赖无已知漏洞
SEO 检查
- [ ] Sitemap 已生成
- [ ] robots.txt 已配置
- [ ] Meta 标签完整
- [ ] Canonical URL 正确
常见问题
部署后页面 404?
常见原因:
- base 路径不正确:子路径部署时需设置
base - 路由模式不匹配:确保服务器配置了 SPA 回退
- 输出目录不正确:确认部署的是
docs/.vitepress/dist
静态资源加载失败?
- 路径问题:检查
base配置与实际部署路径是否一致 - 缓存问题:清除 CDN 缓存或使用新文件名
- CORS 问题:跨域资源需要配置 CORS 头
构建超时?
- 依赖过多:检查是否有不必要的依赖
- 构建缓存:配置构建缓存加速
- Node 版本:使用 Node 20+ 提升构建速度
国内访问慢?
- 选择 Cloudflare Pages 或 EdgeOne 部署
- 使用国内 CDN 加速
- 考虑自托管服务器
进阶配置
Docker 完整配置、EdgeOne 部署、CDN 加速、环境变量、部署检查清单等: