Hugo:给文章添加 lastmod(上次修改时间)
内容提要
文章讨论了如何在Hugo网站中批量添加lastmod日期,以确保修改文章时lastmod不被更改。通过编写脚本提取每篇文章的Git提交日期并插入到frontmatter中,确保网站构建前后内容一致。最后,作者提交了这些改动并删除了脚本。
延伸解读
为什么需要手动添加 lastmod
Hugo 默认使用 Git 提交日期作为 lastmod,这会导致批量修改文章时,即使内容未变,lastmod 也会被更新。作者通过手动在 frontmatter 中添加 lastmod 字段,并调整配置使其优先级最高,从而确保 lastmod 只反映实际内容修改。这种做法适合需要精确控制 lastmod 的站点。
脚本实现与操作流程
作者编写了 add-lastmod.sh 脚本,利用 git log 获取每篇文章的最近一次提交日期,并插入到 frontmatter 中。操作时先构建网站备份,再运行脚本,然后重新构建并对比,确保输出一致。最后提交改动并删除脚本,保持仓库整洁。
验证与风险控制
在修改前后分别构建网站,并使用文件对比工具(如 Kompare)检查 public 目录,确认内容完全相同。这避免了因脚本错误导致页面变化。同时,作者在预览中与线上站点对比,进一步确保视觉一致性。这种严谨的验证步骤值得借鉴。
Q&A
如何在Hugo中添加lastmod日期?
可以通过编写add-lastmod.sh脚本,提取每篇文章的Git提交日期并插入到frontmatter中来添加lastmod日期。
为什么需要将lastmod的优先级调至最高?
将lastmod的优先级调至最高是为了确保Hugo使用自定义的lastmod日期,而不是覆盖为Git提交日期。
在添加lastmod之前需要做什么?
在添加lastmod之前,需要先构建网站以进行对比,确保修改后内容一致。
如何确认修改前后网站内容一致?
可以使用文件对比工具,如Kompare,来确认修改前后的public目录内容完全相同。
添加lastmod后如何提交改动?
添加lastmod后,可以使用git diff查看差异,然后执行git add和git commit提交改动。
为什么要删除add-lastmod.sh脚本?
删除add-lastmod.sh脚本是为了保持代码整洁,避免不必要的文件残留。