本文记录从零开始使用 Hexo + GitHub Actions 搭建个人博客的完整流程。
以下命令中username请替换为你的 GitHub 用户名。
1. 前言
Hexo 是一个快速、简洁且高效的静态博客框架,支持 Markdown 写作,一键生成静态 HTML 文件。GitHub Pages 提供免费的静态站点托管,配合 GitHub Actions 可以实现推送即部署的自动化流程。
整体架构:
1 | 本地写 Markdown → git push → GitHub Actions 自动构建 → 部署到 GitHub Pages |
2. 环境准备
安装 Node.js
前往 Node.js 官网 下载并安装 LTS 版本。安装完成后验证:
1 | node -v |
安装 pnpm
pnpm 是一个快速、节省磁盘空间的包管理器:
1 | npm install -g pnpm |
3. 创建 GitHub 仓库
GitHub Pages 有两种类型:
- User Pages:仓库名为
username.github.io,访问地址为https://username.github.io,只能从main分支部署 - Project Pages:仓库名任意,访问地址为
https://username.github.io/repo-name,可从任意分支部署
本文使用 User Pages 方案。前往 GitHub 创建新仓库:
- 仓库名:
username.github.io - 可见性:Public
- 不要勾选 “Add a README file”、”Add .gitignore”、”Choose a license”(保持空仓库)

4. 克隆仓库到本地
将空仓库克隆到临时目录(如 ~/Download/):
1 | git clone https://github.com/username/username.github.io.git ~/Download/username.github.io |
此时 ~/Download/username.github.io/ 是一个空目录,仅包含 .git 文件夹,关联了远程仓库。
5. 用 Hexo 初始化项目
在工作目录(如 ~/work/)下用 Hexo 初始化项目:
1 | # 安装 Hexo CLI |
本地预览
1 | pnpm server |
浏览器打开 http://localhost:4000/ 即可看到默认博客页面。
项目目录结构
1 | username.github.io/ |
6. 迁移仓库内容到 Hexo 项目
将克隆下来的 .git 目录复制到 Hexo 项目中,使项目关联远程仓库:
1 | # 将 .git 目录从克隆的仓库复制到 Hexo 项目 |
完成后可以删除临时目录:
1 | rm -rf ~/Download/username.github.io |
7. 配置 _config.yml
编辑项目根目录下的 _config.yml,修改以下字段:
Site 区域
1 | # Site |
URL 区域
1 | # URL |
language设置为zh-CN使主题界面显示中文;timezone设置为Asia/Shanghai确保文章时间戳正确。
8. 配置 GitHub Actions 部署工作流
在项目根目录创建 .github/workflows/deploy.yml:
1 | name: Deploy |
关键配置说明
| 配置项 | 作用 |
|---|---|
on.push.branches: main |
推送到 main 分支时触发 |
workflow_dispatch |
支持手动触发 |
permissions: pages: write |
授予写入 GitHub Pages 的权限 |
permissions: id-token: write |
OIDC 认证,部署 Pages 必需 |
concurrency |
同一时间只允许一个部署,取消旧的进行中部署 |
pnpm install --frozen-lockfile |
严格按照 lockfile 安装,保证 CI 一致性 |
actions/deploy-pages@v4 |
官方部署 Action,直接发布到 Pages |
指定 pnpm 版本
pnpm/action-setup@v4 需要知道 pnpm 版本,否则会报错 No pnpm version is specified。在 package.json 中添加 packageManager 字段:
1 | { |
也可在 workflow 的
Setup pnpm步骤中用with: version: 11指定,但推荐用packageManager字段,本地和 CI 统一管理。
9. 推送到 GitHub
项目自带的 .gitignore 已忽略 public/、node_modules/ 等无需提交的文件。直接提交并推送:
1 | git add . |
推送后,GitHub Actions 会自动触发构建。
10. 配置 GitHub Pages
推送代码后,还需要在 GitHub 上配置 Pages 部署源:
- 进入仓库页面,点击 Settings
- 左侧菜单选择 Pages
- Source 下拉选择 “GitHub Actions”(而非 “Deploy from a branch”)

11. 验证部署
查看 Actions 运行状态
进入仓库 Actions 页面,可以看到名为 “Deploy” 的工作流正在运行。等待构建完成后,所有步骤应显示绿色对勾。
访问博客
浏览器打开 https://username.github.io,即可看到博客首页。
12. 开始写文章
创建新文章
1 | hexo new "我的第一篇文章" |
编辑生成的 Markdown 文件,写入内容。
本地预览
1 | pnpm server |
确认效果后,推送即可自动部署:
1 | git add . |
推送后 GitHub Actions 会自动构建并更新线上博客。
13. 结语
本文完整记录了使用 Hexo + GitHub Actions 搭建个人博客的流程:从创建仓库、初始化项目、配置部署工作流到最终上线。整个方案的优点是:
- 免费:GitHub Pages 和 Actions 对公开仓库免费
- 自动化:推送即部署,无需手动操作
- 版本控制:所有文章和配置都有完整的 Git 历史
后续可以进一步探索: