文章目录
合并思路总览
Hugo 的核心规则:项目文件优先于主题文件,同名文件项目侧永远胜出。
合并本质上是将主题文件"提升"到项目根目录,再用已有的定制文件覆盖冲突项。整个流程分为以下阶段:
</> PLAINTEXT
备份 → layouts合并 → assets/static合并 → 配置合并 → 验证 → 移除主题
Step 1:备份项目
提示词:
</> PLAINTEXT
请帮我在当前 Hugo 项目根目录执行备份操作。
要求:
1. 用 git 提交当前状态,commit message 为 "chore: backup before theme merge"
2. 如果没有 git,则将整个项目目录打包为 zip,命名为 backup-before-merge.zip
3. 确认备份完成后输出备份文件路径或 commit hash
Step 2:复制 layouts 模板
提示词:
</> PLAINTEXT
我正在将 Hugo 主题 [主题名] 合并到项目根目录。
请帮我执行 layouts 目录的初次复制:
1. 将 themes/[主题名]/layouts/ 下的所有文件复制到项目根目录的 layouts/
2. 复制时不覆盖项目根目录已存在的同名文件(使用 cp -rn 或等效方式)
3. 复制完成后,列出以下两类文件:
- 【跳过的文件】:因项目侧已存在而未复制的文件(这些需要手动合并)
- 【新增的文件】:从主题复制过来的新文件
请将结果按目录分组展示。
Step 3:识别 layouts 冲突文件并生成合并清单
提示词:
</> PLAINTEXT
我需要找出 layouts/ 目录中需要手动合并的冲突文件。
已知规则:
- 项目根目录的 layouts/ 是我的定制版本
- themes/[主题名]/layouts/ 是主题原始版本
- 同名文件需要手动对比合并
请执行:
1. 找出在项目 layouts/ 和 themes/[主题名]/layouts/ 中同时存在的所有文件
2. 对每个冲突文件,说明它属于哪个类型:
- partials(局部模板)
- shortcodes(短代码)
- _default(默认列表/单页模板)
- 其他
输出格式为一张 Markdown 表格,列为:文件路径 | 冲突类型 | 建议处理方式
Step 4:逐文件执行三方合并(可循环执行)
提示词(对每个冲突文件单独执行):
</> PLAINTEXT
请帮我合并以下 Hugo 模板文件:
文件路径:layouts/[文件相对路径]
规则:
- 我的版本(项目侧)= layouts/[文件路径]
- 主题版本 = themes/[主题名]/layouts/[文件路径]
请执行:
1. 并排展示两个版本的差异(diff 格式)
2. 分析每处差异,判断应保留哪一方:
- 保留我的版本:样式类名、自定义 HTML、个性化内容
- 保留主题版本:结构性标签、新增的功能逻辑
- 两者合并:主题新增了功能,而我也改动了同区域
3. 输出合并后的完整文件内容
4. 如有合并判断不确定的地方,用注释 {{/* MERGE: 说明 */}} 标记
Step 5:复制 assets 和 static 目录
提示词:
</> PLAINTEXT
请帮我合并 Hugo 主题的静态资源目录。
执行以下操作(均使用不覆盖模式,保护我的定制文件):
1. cp -rn themes/[主题名]/assets/ assets/
2. cp -rn themes/[主题名]/static/ static/
完成后:
1. 列出从主题复制过来的新文件(按目录分组)
2. 列出因项目侧已存在而跳过的文件
3. 对跳过的文件,检查两版本是否存在实质性差异(如主题更新了字体、图标版本),如有则提示需人工检查
Step 6:复制 i18n / data / archetypes
提示词:
</> PLAINTEXT
请帮我合并 Hugo 主题的辅助配置目录。
依次执行(均使用不覆盖模式):
1. cp -rn themes/[主题名]/i18n/ i18n/ # 多语言翻译文件
2. cp -rn themes/[主题名]/data/ data/ # 数据文件
3. cp -rn themes/[主题名]/archetypes/ archetypes/ # 内容模板
完成后输出:
- 各目录新增了哪些文件
- 哪些文件被跳过(需人工对比)
Step 7:合并 hugo.toml 配置
提示词:
</> PLAINTEXT
请帮我合并 Hugo 配置文件。
我的配置:hugo.toml(或 config.yaml)
主题示例配置:themes/[主题名]/exampleSite/hugo.toml
合并规则:
1. 删除 theme = "[主题名]" 这一行(迁移后不再需要)
2. [params] 下的参数:保留我改过的值,主题独有且我未修改的默认值可丢弃
3. [menu]:以我的配置为准
4. [markup] / [outputs] / [build]:逐项对比,取并集,不丢弃任何一方有效配置
5. 主题独有的 [params.xxx]:检查模板文件中是否有引用,有引用则保留,否则可删
请:
1. 展示 diff 对比
2. 给出合并建议(表格形式:配置项 | 我的值 | 主题值 | 建议处理)
3. 输出合并后的完整配置文件
Step 8:本地验证
提示词:
</> PLAINTEXT
请帮我验证 Hugo 站点在主题合并后是否正常工作。
执行:
1. 运行 hugo server -D 并捕获输出
2. 检查是否有 ERROR 或 WARN 级别的日志
3. 对每条错误,给出可能原因和修复建议,常见问题包括:
- can't evaluate field xxx → 缺少 params 配置项
- template not found → 模板路径错误
- shortcode not found → shortcode 文件缺失
- partial not found → partial 路径引用错误
将错误按严重程度分类:
- 🔴 阻断渲染(必须修复)
- 🟡 功能缺失(建议修复)
- ⚪ 警告(可暂时忽略)
Step 9:全站页面验收
提示词:
</> PLAINTEXT
请帮我生成 Hugo 站点的验收检查清单,并逐项确认。
站点地址:http://localhost:1313
检查以下页面类型:
1. 首页(/)→ 检查:导航、Hero 区域、文章列表
2. 文章列表页(/posts/ 或 /blog/)→ 检查:分页、标签、分类
3. 单篇文章页 → 检查:正文渲染、代码高亮、图片、shortcode
4. 关于/自定义页面 → 检查:自定义 CSS 是否生效
5. 404 页面(/404.html)→ 检查:是否存在且样式正常
对每个页面,确认:
- [ ] 样式加载正常(无裸奔 HTML)
- [ ] 字体和颜色与迁移前一致
- [ ] 导航链接可正常跳转
- [ ] 自定义功能(搜索、评论、目录等)正常工作
如发现异常,请描述现象并给出排查思路。
Step 10:移除主题
提示词:
</> PLAINTEXT
确认站点验收通过后,请帮我彻底移除主题依赖。
执行以下操作:
1. 确认 hugo.toml 中已不含 theme = "[主题名]" 行
2. 删除主题目录:
- 如果是普通目录:rm -rf themes/[主题名]
- 如果是 git submodule:
a. git submodule deinit themes/[主题名]
b. git rm themes/[主题名]
c. 手动删除 .gitmodules 中对应条目
3. 提交最终状态:
git add -A
git commit -m "chore: remove theme dependency, fully standalone site"
完成后输出最终的项目目录结构(只展示到第二层)。
常见问题速查提示词
CSS 变量冲突
</> PLAINTEXT
我的 Hugo 站点合并后出现 CSS 变量冲突,主题的 main.css 和我的 custom.css 定义了同名变量,
后者没有生效。请帮我:
1. 找出冲突的 CSS 变量名
2. 将我的变量提取到 assets/css/variables.css
3. 修改模板中的 CSS 引入顺序,确保我的变量文件最后加载
Shortcode 同名验证
</> PLAINTEXT
我的项目和主题都有 layouts/shortcodes/[名称].html,合并后请帮我验证:
1. 当前生效的是哪个版本(应为项目根目录版本)
2. 在内容文件中搜索所有使用该 shortcode 的地方,各渲染一个样例确认输出正确
缺失 params 修复
</> PLAINTEXT
hugo server 报错 "can't evaluate field [字段名] in type page.Params"
请帮我:
1. 在 layouts/ 中搜索所有引用 .Params.[字段名] 的模板
2. 判断这个 param 是否必须保留(有实际功能)还是可以删除(主题遗留废弃参数)
3. 给出修复方案:要么在 hugo.toml [params] 中补回该字段,要么在模板中加 with 条件保护
迁移完成后的确认清单
</> PLAINTEXT
- [ ] hugo.toml 中无 theme = 行
- [ ] themes/ 目录已删除(或 git submodule 已移除)
- [ ] hugo server 无 ERROR 级别日志
- [ ] 首页、列表页、文章页视觉正常
- [ ] 自定义 CSS/JS 功能正常
- [ ] git log 有完整的迁移提交记录
- [ ] 项目可独立构建:hugo --minify 输出正常
完成以上所有步骤后,你的 Hugo 站点将完全脱离主题依赖,所有代码都在你的版本控制之下。
评论