我原来以为,从 Hexo 搬到 Hugo,主要是搬文章、调主题。真正动手后发现,主题模板、页面样式和代码块都得重新对上。

记下这次碰到的几个问题,免得下回再绕一遍。

主题相关

这次没有继续改 themes/maupassant,而是把新主题放在 themes/blog。刚开始页面直接报错:

partial "head.html" not found

新主题的 baseof.html 调用了 head.html,但对应 partial 不存在。补上 themes/blog/layouts/partials/head.html 后才能继续渲染。主题能被选中,不代表模板依赖已经齐全。

本机已有 Hugo,构建继续调用 /opt/homebrew/bin/hugo,没有另装发行版。

样式调优

整体布局调得差不多后,菜单选中状态、标签数量格式、最近文章换行和图标差异仍然很明显。把菜单和侧栏结构统一处理后,这些细节才有地方一起修。

顶部简介沿用站点配置,不在主题里另写固定文案;否则配置改了,页面还会显示旧内容。

自定义页面

“关于”“下载”等页面由内容目录维护,菜单提供链接,不把正文写死在主题模板里。

语法高亮优化

代码块先后遇到命令没颜色、路径被误判的问题。现在改用本地 Shiki bundle 和现成 grammar:Windows 命令标为 bat,Linux 命令使用 shell grammar,D:\backup.ab 就不会被 Bash 当成转义。Batchfile grammar 不会把任意外部命令(如 adbjava)都单独着色,这点不能靠乱标语言掩盖。

行间距过大则是 CSS 的 white-space 与 Shiki 行元素冲突:行元素设为块级后,容器又保留了它们之间的换行。让容器折叠行间空白、单行内部继续保留空格后恢复正常。

构建验证

不再逐页检查生成结果,而是先验证统一 render hook 和页面结构,再用本机 Hugo 构建。代码页才加载 Shiki 脚本,其他页面不加载。

迁移还没完。至少这几处细节记下来了,后面不用再从头猜。