前端项目多平台部署:GitHub Pages + Vercel + Cloudflare Pages 实战教程

前言

一个好的部署方案可以让你的博客被更多人访问。今天分享如何将 Vue 3 项目部署到多个平台!

部署平台对比

平台 免费额度 CDN 自动部署 自定义域名
Vercel 100GB 带宽 ✅ 免费
Cloudflare Pages 无限 ✅ 免费
Netlify 100GB 带宽 ✅ 免费
GitHub Pages 1GB ✅ 免费

1. Vercel 部署

配置文件

javascript 复制代码
// vercel.json
{
  "rewrites": [
    { "source": "/(.*)", "destination": "/index.html" }
  ],
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        { "key": "Cache-Control", "value": "public, max-age=0, must-revalidate" }
      ]
    },
    {
      "source": "/assets/(.*)",
      "headers": [
        { "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
      ]
    }
  ]
}

部署步骤

bash 复制代码
# 1. 安装 Vercel CLI
npm i -g vercel

# 2. 登录
vercel login

# 3. 部署
vercel

# 4. 生产环境部署
vercel --prod

2. Cloudflare Pages 部署

配置文件

yaml 复制代码
# wrangler.toml
name = "my-blog"
type = "webpack"
compatibility_date = "2022-01-01"

[env.production]
routes = [
  { pattern = "blog.example.com", zone_name = "example.com" }
]

GitHub Actions 自动部署

yaml 复制代码
# .github/workflows/cloudflare-pages.yml
name: Deploy to Cloudflare Pages

on:
  push:
    branches: [main]
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: '18'
          cache: 'npm'
          
      - name: Install dependencies
        run: npm ci
        
      - name: Build
        run: npm run build
        
      - name: Deploy to Cloudflare Pages
        uses: cloudflare/pages-action@v1
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          projectName: my-blog
          directory: dist

3. Netlify 部署

配置文件

toml 复制代码
# netlify.toml
[build]
  command = "npm run build"
  publish = "dist"

[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

[build.environment]
  NODE_VERSION = "18"

部署命令

bash 复制代码
# 1. 安装 Netlify CLI
npm i -g netlify-cli

# 2. 部署
netlify deploy --dir=dist --prod

4. GitHub Pages 部署

GitHub Actions

yaml 复制代码
# .github/workflows/deploy.yml
name: Deploy to GitHub 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@v3
      
      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: '18'
          cache: 'npm'
          
      - name: Install dependencies
        run: npm ci
        
      - name: Build
        run: npm run build
        env:
          VITE_BASE_URL: '/blog/'
          
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v1
        with:
          path: 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@v2

构建脚本优化

json 复制代码
// package.json
{
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "build:vercel": "VITE_BASE_URL=/ vite build",
    "build:github": "VITE_BASE_URL=/blog/ vite build"
  }
}

域名配置

DNS 设置

复制代码
# A 记录(根域名)
@  A  192.0.2.1

# CNAME 记录(子域名)
blog  CNAME  your-site.vercel.app

SSL 证书

所有平台都提供免费的 Let's Encrypt 证书,自动配置。


💡 选择建议

  • 国内访问:推荐 Vercel 或 Cloudflare(速度快)

  • GitHub 集成:GitHub Pages 最方便

  • 企业项目:推荐 Vercel(功能丰富)
    🔗 相关资源

  • Vercel:vercel.com

  • Cloudflare:pages.cloudflare.com

相关推荐
无聊的老谢12 小时前
Web GIS 最佳实践:Vue 集成 Leaflet/OpenLayers 实现基站海量点位渲染
前端·javascript·vue.js
yingyima12 小时前
GCP Cloud Scheduler 核心语法与实战示例速查手册
前端
用户573501072520612 小时前
Elpis 项目阶段性总结 - 基于 vue3 完成领域模型架构建设
前端
东风破_12 小时前
V8 如何执行你的代码——编译、上下文与调用栈
javascript
假如让我当三天老蒯12 小时前
为什么 setData 能获取到 prev 参数?(自学用)
前端·react.js
AskHarries12 小时前
Workspace:文件系统、项目上下文和执行边界
java·服务器·前端
Aphasia31112 小时前
从内存模型看深浅拷贝
前端·javascript·面试
IT策士13 小时前
第45篇 k8s之实战:将 Web 应用迁移到 Kubernetes(下)
前端·容器·kubernetes
云水一下13 小时前
TypeScript 从零基础到精通(二):基础类型与类型系统
javascript·typescript
你怎么知道我是队长13 小时前
CRC校验C语言实现-CRC8、CRC16、CRC16的直接计算法、查表法
c语言·前端·javascript