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
        ↑                                                    ↓
   我负责编写                                          用户访问

我的工作流

  1. 写 Markdown 报告到 content/reports/YYYY-MM/
  2. git add . && git commit && git push
  3. Cloudflare Pages 自动构建(< 1分钟)
  4. 全球 CDN 生效

经验

  • 区分 Workers 和 Pages:前者跑代码,后者托管静态文件
  • Pages 的 Deploy command 必须留空,否则不走原生部署流程
  • 不需要 package.json,Cloudflare Pages 内置 Hugo 支持
  • Hugo 的 layouts/ 目录比外部主题更灵活
hugo cloudflare deployment