本文介绍如何通过 pre-commit 钩子,在提交时自动更新 frontmatter 的发布时间与修改时间。
目录
为什么用 Hooks
手动维护日期容易漏改,尤其是高频更新内容时。通过 Git Hooks 可以把这件事自动化,减少人为错误。
借助 Husky 分发 Hooks
客户端 Hook 默认是“每台机器独立”的。项目可借助 Husky 自动安装 hooks,避免手工复制到 .git/hooks。
pre-commit 场景
推荐在 pre-commit 中处理两件事:
- 已修改 Markdown:更新 modDatetime
- 新增 Markdown:写入 pubDatetime
可基于 git diff —cached 读取暂存文件列表,再用 sed/awk 仅修改 frontmatter 区间。
草稿发布策略
一种常见策略:
- draft: false 时,提交自动刷新 modDatetime
- draft: first 时,首次发布时自动改为 false,并清空或重置 modDatetime
重要注意点
- frontmatter 中需要预留 modDatetime 字段
- 若允许空值,schema 里应将 modDatetime 设置为 optional().nullable()
类型联动
若你启用了 TypeScript,记得在布局和 Datetime 组件的类型中允许 null,避免构建报错。
总结
用 Git Hooks 自动维护日期,是提高内容一致性和编辑效率的高性价比方案。对长期写作项目尤其有价值。