用脚本解析git log生成html比手写更可靠,conventional-changelog-cli可自动归类feat/fix等提交并插入至内,python脚本则适合深度定制;关键需确保html语义正确、time标签datetime值为纯日期且与显示一致。

直接用脚本解析 git log 生成 HTML,比手写或半手动维护靠谱得多——只要 commit message 有基本规范,就能稳定产出可读、可锚点跳转、无障碍友好的 changelog 页面。
用 conventional-changelog-cli 一键生成 HTML 片段
它不直接输出 HTML,但能精准追加符合语义的 HTML 内容到现有文件中,适合嵌入文档页底部:
-
npx conventional-changelog -p angular -i changelog.html -s:自动识别feat:、fix:等前缀,归类并插入到changelog.html文件末尾 - 必须确保已有
changelog.html包含<section id="changelog"></section>这样的容器,工具才会往里追加<details><summary>v2.1.0...</summary></details> - 生成结果默认带
<time datetime="2024-05-20"></time>,满足机器可读要求;但注意它不会自动加aria-labelledby或<h2></h2>标题,需手动补全结构 - 如果 commit 没按约定写(比如混用
update:、change:),分类会漏掉——建议先跑git log --oneline | grep -E "^(feat|fix|perf)"快速验证覆盖率
用 Python 脚本调 git log 输出原生 HTML 块
适合不想引入 Node 生态、或需要深度定制字段(如作者、PR 号、影响模块)的团队:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 核心命令:
git log --pretty=format:"%h %ad %s" --date=short --no-merges v1.0.0..HEAD,其中%ad+--date=short直接输出YYYY-MM-DD格式,省去 JS 解析 - 每行匹配正则
^([a-f0-9]{7}) (\d{4}-\d{2}-\d{2}) (feat|fix|docs): (.+)$,提取后组装为:<details><summary>v2.1.0 <time datetime="2024-05-20">2024-05-20</time></summary><ul><li>feat: 登录支持扫码</li></ul></details> - 注意:别用
datetime="2024-05-20T10:30:00"这种带时分秒的值——多数 CI 工具和静态站点生成器只认纯日期,否则article time[datetime]选择器会失效 - 脚本最后应
print(html_block)到 stdout,由 shell 重定向写入文件,避免编码问题(尤其 Windows 下)
HTML 结构里最容易被忽略的三个硬性细节
再准的生成脚本,如果 HTML 容器不合规,日志就等于没写:
-
<changelog></changelog>标签根本不存在,也别用<div class="changelog"> ——语义缺失会导致屏幕阅读器跳过整块内容 <li>每条版本记录必须独立包裹在 <code><details></details>或<section></section>中,禁止所有变更堆在一个<div> 里;否则自动化提取时间戳时会错位 <li> <code><time datetime="2024-05-20">2024-05-20</time>的datetime属性值必须是纯YYYY-MM-DD,且与显示文本严格一致;若显示“2024年5月20日”而datetime是2024-05-20,部分 RSS 聚合器会拒绝解析
生成脚本可以跑得飞快,但结构一旦出错,后续所有自动化(CI 提取、RSS 推送、辅助技术朗读)都会失效——与其后期补救,不如从第一行 HTML 就按规范写死容器和属性。










