Hugo:给文章添加 lastmod(上次修改时间)

💡 原文中文,约1700字,阅读约需4分钟。
📝

内容提要

本文讨论了如何在Hugo网站中批量添加lastmod日期,以避免在修改文章时更改其最后修改时间。通过编写脚本提取Git提交日期并插入到文章的frontmatter中,确保内容未变时lastmod保持不变,并通过对比构建的网站确认修改无误。

🔎

延伸解读

为什么需要手动添加 lastmod

Hugo 默认使用 Git 提交的 author date 作为 lastmod。当批量修改文章(如补全日期格式)时,即使内容未变,所有文章的 lastmod 也会被更新为当天,导致时间戳失真。通过手动在 frontmatter 中添加 lastmod 并调整优先级,可以确保 lastmod 仅反映内容实际修改时间,避免误导读者。

脚本实现与操作流程

作者编写了 add-lastmod.sh 脚本,遍历指定目录下的文件,使用 git log 获取每个文件的最后提交日期,并通过 awk 将 lastmod 行插入到 frontmatter 的第二个 --- 之前。操作前先构建网站备份,添加 lastmod 后再次构建,用文件对比工具确认输出无变化,最后提交改动并删除脚本。

验证与注意事项

为确保修改不影响网站内容,作者在修改前后分别构建网站,并使用 Kompare 对比生成的 public 目录,结果完全相同。此外,还通过本地预览与线上网站对比,确认外观一致。这种方法适用于需要保持 lastmod 准确性的场景,但需注意脚本仅处理 frontmatter 格式,且依赖 Git 历史记录。

❓

Q&A

如何在Hugo中保持文章的lastmod日期不变?

通过在每篇文章中添加lastmod字段,并将其优先级调至最高,可以确保在修改文章时lastmod日期保持不变。

如何批量添加lastmod日期到Hugo文章中?

可以创建一个名为add-lastmod.sh的脚本,提取Git提交日期并插入到每篇文章的frontmatter中。

在修改文章前需要做什么准备工作?

在修改前需要构建网站,以便后续对比确保内容未变时lastmod保持不变。

如何确认添加lastmod后的文章内容没有变化?

使用文件对比工具(如Kompare)对比修改前后的构建网站,确保内容完全相同。

为什么需要将lastmod的优先级调至最高?

将lastmod的优先级调至最高是为了防止Hugo使用Git提交日期作为lastmod,确保其在内容未变时不被更新。

如何使用Git提交lastmod的更改?

在确认修改无误后,使用git diff查看差异,然后执行git add和git commit提交更改。

🏷️

标签

➡️

继续阅读