这篇文章用来记录我当前这套博客的实际更新流程。
当前站点的构建链路
这套博客现在的发布链路可以概括成四步:
- 在站点根目录修改内容、模板或样式。
- 本地执行构建命令,生成
public静态站点。 - 在 Hugo 构建完成后,再为
public生成Pagefind搜索索引。 - 把最终的
public内容推送到部署仓库,由 Vercel 发布。
其中:
Hugo负责把文章、列表页、首页、分类页等内容编译成静态 HTML。Pagefind负责扫描public,生成搜索所需的索引文件。Vercel负责把最终的静态文件部署到线上。
一定要先 Hugo,再 Pagefind
原因很简单:Pagefind 不是直接扫描 content 目录里的 Markdown,而是扫描已经生成好的 public 页面。
也就是说,搜索索引依赖于 Hugo 的输出结果。
如果顺序反过来,或者 Hugo 在生成后又清空了一次 public,那么前面做好的搜索索引就会丢失。当前项目的 Hugo 构建命令里用了:
hugo --gc --minify --cleanDestinationDir
其中 --cleanDestinationDir 会清理目标输出目录,所以正确顺序必须是:
先 Hugo
后 Pagefind
最后发布 public
平时更新文章、样式、模板,都是在项目根目录操作,而不是在 public 里直接改。
例如:
- 修改
content下的文章 - 修改
layouts下的模板 - 修改
static或assets下的样式与脚本 - 修改
hugo.toml
如果只是边写边看效果,可以先运行:
npm run dev
它会启动本地 Hugo 开发服务器,适合检查版式、文章页、列表页和样式变化。
确认内容没问题后,在项目根目录运行:
npm run build
执行完之后,public 目录里应该同时有:
- 新生成的 HTML 页面
- 静态资源
pagefind搜索索引目录
如果只看目录结构,重点关注的是:
public/
pagefind/
只要 public/pagefind 存在,说明搜索索引已经一并生成了。
确认 public 内容已经更新后,再进入 public 仓库推送:
cd public
git add -A
git commit -m "Update site"
git push --set-upstream origin main
如果远程分支已经建立好,后面通常也可以直接:
git push
日常更新时,基本可以直接按下面执行:
cd D:\LAZ\myblog
npm run build
cd public
git add -A
git commit -m "Update site"
git push
如果只是本地预览而不发布:
cd D:\LAZ\myblog
npm run dev
如果已经手动执行过 Hugo,只差搜索索引:
cd D:\LAZ\myblog
npm run build:search