手动部署没有CSS样式
本地生成正常,手动部署github没有CSS样式。可能是忘记改baseUrl,还在用localhost:1313。
把地址改成https://你的github仓库地址/。然后删除public里面生成的静态文件,执行hugo -D重新生成,然后再次部署。
自动部署只有index.xml,没有html生成
如果手动部署正常,但是自动部署有问题。
证明不是 Hugo 配置本身 的问题(本地能正常生成 HTML),而是 GitHub Actions 构建时没有拿到 HTML 的布局文件,于是 Hugo “找不到 layout → 跳过 HTML”,但 RSS 用的是内置模板还能生成,于是发布后只剩 index.xml。
配置里用的是 PaperMod。如果主题是 git submodule 放在 themes/PaperMod,Actions 默认不会把子模块拉下来;没有主题就没有 HTML 布局,Hugo 会在日志里报类似:
WARN found no layout file for ... kind home | HTML
而 RSS 仍会生成。
修复: 在 checkout 加上 submodules: true(或 recursive),示例工作流:
name: deploy
# 代码提交到main分支时触发github action
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true # ★ 拉取主题子模块
# submodules: recursive # 若主题里还有子模块
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: "latest"
extended: true
- name: Build Web
run: hugo -D
- name: Deploy Web
uses: peaceiris/actions-gh-pages@v4
with:
PERSONAL_TOKEN: ${{ secrets.你的TOKEN }}
EXTERNAL_REPOSITORY: 你的github名字/你的github部署网站的仓库名
PUBLISH_BRANCH: main
PUBLISH_DIR: ./public
commit_message: auto deploy
其它小问题
Hugo在构建时要在 public/tags/index.xml 位置生成一个文件(通常是 tags 的 RSS)。如果index.xml是个tag,那么会生成index.xml的文件夹,而文件无法覆盖目录,会报错导致部署失败。建议把tag中的index.xml改成index-xml