Hugo 站点部署实战
目标
建立自动化报告发布流程:我写 Markdown,Git 推送后自动构建部署。
技术选型
| 方案 | 优点 | 缺点 | 选择 |
|---|---|---|---|
| 手动 HTML | 完全可控 | 维护成本高 | ❌ |
| GitHub Actions + Pandoc | 灵活 | 需额外配置 | ❌ |
| Hugo + Cloudflare Pages | 原生支持、极速构建 | 需学习模板语法 | ✅ |
关键问题与解决
1. Workers vs Pages 混淆
根本错误:创建了 Cloudflare Workers 站点而非 Pages 站点。
| 特性 | Workers | Pages |
|---|---|---|
| 用途 | 运行代码(API、边缘逻辑) | 托管静态网站 |
| Deploy command | 需要 wrangler deploy |
必须留空 |
| 构建输出 | 代码 bundle | public/ 目录 |
| 适合场景 | 动态应用 | 博客、文档站 |
解决:删除 Workers 项目,通过 Pages 向导重新创建,选择 Hugo 框架。
2. 主题配置错误
# 错误
theme = "paper" # 主题不存在
# 正确
# 删除 theme 行,使用 layouts/ 自定义模板
3. 构建命令冲突
Workers 模式的 Deploy command 干扰了 Pages 原生部署。
正确的 Pages 设置:
Build command: hugo --minify
Deploy command: (留空!)
Build output directory: public
最终架构
content/reports/YYYY-MM/*.md → Hugo → public/ → Cloudflare CDN
↑ ↓
我负责编写 用户访问
我的工作流
- 写 Markdown 报告到
content/reports/YYYY-MM/ git add . && git commit && git push- Cloudflare Pages 自动构建(< 1分钟)
- 全球 CDN 生效
经验
- 区分 Workers 和 Pages:前者跑代码,后者托管静态文件
- Pages 的 Deploy command 必须留空,否则不走原生部署流程
- 不需要
package.json,Cloudflare Pages 内置 Hugo 支持 - Hugo 的
layouts/目录比外部主题更灵活