Skip to content
Souloss
Go back

如何使用 Git 钩子自动设置文章日期

如何使用 Git 钩子在 astro-minimax 中自动设置创建和修改日期。

教程/工程化 |
更新于:
| 2 分钟阅读 | 510 字

astro-minimax 博客文章的 frontmatter 中包含 pubDatetime(发布日期)和 modDatetime(修改日期)字段。手动维护这些日期既繁琐又容易忘记。本文介绍如何使用 Git 钩子自动处理。

重要说明

钩子只会自动填充空的日期字段,不会覆盖你手动指定的值。

如果你已经在 frontmatter 中设置了 pubDatetimemodDatetime,钩子会保留你的指定。

方式一:使用 CLI 一键安装(推荐)

astro-minimax CLI 提供了 hooks 命令,可以自动安装 Husky 和配置 pre-commit 钩子:

# 在博客项目目录执行(支持子目录)
astro-minimax hooks install
bash

这会:

  1. 检测项目类型(单项目 / Monorepo)
  2. 安装 Husky 作为开发依赖
  3. 创建 .husky/pre-commit 钩子脚本
  4. 配置 prepare 脚本

安装后,每次 git commit 时会自动填充空的日期字段:

场景条件行为
新文章pubDatetime 为空自动填充当前时间
新文章pubDatetime 有值跳过,保留原值
修改文章draft: false + modDatetime 为空自动填充当前时间
修改文章draft: false + modDatetime 有值跳过,保留原值
首次发布draft: first改为 draft: false,清空 modDatetime

其他命令:

astro-minimax hooks status     # 查看当前状态
astro-minimax hooks uninstall  # 卸载钩子
bash

方式二:手动配置

如果你想自己配置,按以下步骤操作。

步骤 1:安装 Husky

Husky 是一个 Git 钩子管理工具:

pnpm add -D husky
npx husky init
bash

步骤 2:创建 pre-commit 钩子

编辑 .husky/pre-commit

钩子逻辑说明

新增文件(A):

  1. 检查 pubDatetime 是否为空
  2. 空则填充当前时间,有值则跳过

修改文件(M):

  1. 检查 draft 状态
  2. 如果 draft: false:检查 modDatetime 是否为空,空则填充
  3. 如果 draft: first:改为 draft: false,清空 modDatetime

首次发布流程

使用 draft: first 实现首次发布自动化:

---
title: "新文章"
pubDatetime:           # 留空,钩子会自动填充
modDatetime:           # 留空
draft: first           # 首次发布标记
---
yaml

提交时钩子会:

  1. 自动填充 pubDatetime
  2. draft 改为 false
  3. 后续修改时自动更新 modDatetime

注意事项

  1. Git 钩子只在本地生效 — 团队成员需要各自运行 astro-minimax hooks install
  2. 需要先暂存文件 — 钩子在 git commit 时运行,处理的是已 git add 的文件
  3. 支持 Monorepo — CLI 会自动检测 git 根目录,在正确位置安装钩子
  4. 手动指定的日期会被保留 — 钩子只填充空值

相关链接



上一篇
从零开始:完整博客搭建指南
下一篇
配置 Umami 网站统计:Vercel 免费部署方案

相关推荐

评论区

文明评论,共建和谐社区