xiaofuyesnew
2023/02/13阅读:734
从 Github 到 Vercel
本文详细介绍了同时在 Github Pages 和 Vercel 上部署静态页面的流程方法。
本文将不会涉及且基于读者已熟知并建立以下环境:
开发环境(Node.js/Git/VSCode...) Github 账号 科学上网

在 Github 上开发和部署静态页面
创建项目并连接到远程仓库
比如,我们希望“从零开始”创建自己的博客系统,那么不妨从简单的前端项目开始:
$ pnpm create vite <project name> --template vue
# <project name> 为自定义的项目名称,下同
这里,我们创建了一个 Vite
项目,前端技术栈选用 Vue
。
进入到刚才创建的 <project name>
目录下,并初始化本地仓库:
$ cd <project name>
$ git init
# 主分支更名(可选)
$ git branch -M main
# 暂存所做的修改
$ git add .
# 提交代码
$ git commit -m 'chore: project initialized'
一个本地的前端项目就创建好了,我们可以通过 git
在本地管理代码。
接下来,我们登录 Github 在我们的账号下创建一个 Repo
:

暂且将该 Repo 保持与本地一致的命名。
当创建完成时,我们可以获得该远程仓库的地址:git@github.com:<user or team name>/<project name>.git
。其中,<user or team name>
为创建该 Repo 的用户名或团队名称, <project name>
为该项目名称。
然后,我们就可以将本地仓库与远程仓库连接起来,在本地项目路径下执行:
$ git remote add origin git@github.com:<user or team name>/<project name>.git
$ git push -u origin <main branch name>
# <main branch name> 是本地仓库中主分支名称,一般更改后为 main ,更改之前默认为 master
至此,我们就将本地和远程的仓库进行了连接,可以方便地通过 git pull
和 git push
拉取和推送代码了。
使用 Github Actions 和 Github Pages 构建和部署静态页面
在项目的远程仓库中,创建一个新的分支 gh-pages
(也可以是其他名字):

这个分支的作用是承载编译后的静态页面文件,因此,该分支不需要同步到本地仓库。
接着,来到远程仓库的 Settings
页面,点击 Pages
选项卡:

如上图所示,配置无误后可进行后续操作。
到 Github 中的个人 Settings 页面,进入 Personal access tokens
:

生成一个合适的 access token
,并将它设置到项目仓库的 secrets
中,以方便我们在 actions
中调用,并保证敏感信息不暴露给其他用户:

远程仓库的配置基本完成,让我们回到本地项目。
在项目文件夹中创建文件 .github/workfolws/pages.yml
,文件内容如下:
name: pages
# 在 main 分支被推送代码时触发 actions
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 检出仓库代码
- name: Checkout
uses: actions/checkout@v3
# 安装 node.js 环境
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: latest
# 安装 pnpm
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: latest
run_install: false
# 检查和设置 pnpm 缓存
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
# 安装项目依赖
- name: Install dependencies
run: pnpm install
# 构建项目
- name: Build
run: pnpm build
# 将构建后的文件部署到 gh-pages 分支
- name: Deploy
uses: crazy-max/ghaction-github-pages@v3
with:
target_branch: gh-pages
build_dir: dist
env:
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
然后,我们提交代码,并推送代码到远程仓库的 main
分支,然后我们就可以去远程仓库的 actions
中查看构建过程:

构建完成后, Github Pages 会将静态文件部署到页面服务器,接着,我们可以打开链接 <user or team name>.github.io/<project name>/
进行查看。
在 Vercel 上部署静态页面
Vecel 可以直接用 Github 的账号登录:

在控制台创建一个新项目,如果没有在 Github 中没有安装 Vercel 应用,会弹出如下图所示的弹窗:

点击需要与 Vercel 关联的账号与团队,会进入具体配置页面:

可以选择绑定所有的仓库,也可以选择绑定部分仓库。
安装完成后,就可以 import 对应的仓库了:

最后,点击 Deploy
就可以进行部署了:

此时 Vercel 会拉取远程仓库的代码并构建,最后部署到 Verccel 的页面服务器上。
Vercel 分配域名的规则是 <project name>[-<random word>].vercel.app
。
当 Github 远程仓库的对应分支上有 commit 时,则会触发 Vercel 的构建和部署。
在 Vercel 的项目设置中,可以更改远程仓库对应的分支,绑定自有域名和自定义构建命令等操作。
总结
通过 Github Actions 可以将代码构建并部署到 Github Pages 上;同时,也可以通过 Vercel 来部署相同的页面。两者都可以通过向相关的分支 commit 代码来触发构建和部署。
如对该文章涉及到的话题感兴趣,可在
【开源说】公众号
回复【关注】或【作者】
长按二维码加好友,备注【开源说】