前端项目多平台部署: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

相关推荐
To_OC18 小时前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC18 小时前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
天渺工作室19 小时前
实现一个adblock/adblock plus等浏览器广告拦截器检测插件
前端·javascript
阳光是sunny19 小时前
Vue 项目怎么做用户行为全链路监控?轻量插件方案详解
前端·面试·架构
ZhengEnCi19 小时前
Q04-Vite禁用CSS代码分割-解决生产环境样式加载顺序混乱问题
前端·vue.js·vite
九酒20 小时前
AI Agent 开发踩坑记:口播功能非得用 APP 原生实现吗?
前端·人工智能·agent
Jackson__20 小时前
做了一段时间的AI coding后,我终于搞清了 CLI 和 MCP 的区别
前端·agent·ai编程
IT_陈寒1 天前
JavaScript项目实战经验分享
前端·人工智能·后端
用户47949283569151 天前
6w star,GitHub 趋势第一的 Ponytail,这个agent插件到底在火什么
前端·后端
薛定喵的谔1 天前
我开源了一个精致的 Next.js 博客模板:Skyplume
前端·前端框架·next.js