Skip to content

Git 生成更新日志

October 30, 2024 by ccforeverd

根据 Git 提交记录生成更新日志

主流程构思

  • 数据来源
    • 首先是使用 git 工具, 所以该步骤不能前端实现, 需要借助 build 工具
    • 这里使用 vocs 框架是基于 vite 的, 可以使用对应的钩子来实现
    • 基于 nodejsgit 工具, 调研后决定使用 simple-git
  • 展示效果
    • 主维度应为 日期, 次维度应为 文件
    • 依据 git log 对于单个文件的提交记录, 来收集展示数据
    • 使用 Timeline 组件展示
  • 后续思考
    • 是否采取增量更新的方式, 减少每次构建的时间
      • 可以使用, 但之前基于单文件的 git log 需要加上 last-commit, 可以等待文档数量级提升后进行优化
    • 可以更换维度, 以 文件 为主维度, 制作目录结构
      • 可展示文件修改记录
      • 可展示文件缩略图
    • 只在 dev 模式下展示, 可能会丢失最新的修改 (除非先提交, 然后再 dev 后提交一次)

示例及代码

vocs.config.ts
export default {
  // ...
  vite: {
    // ...
    plugins: [
      // ...
      {
        name: 'ccforeverd:git-history',
        async configResolved(resolvedConfig) {
          // 只在 dev 环境执行, 然后提交上去, 不在 github action 里执行, 因为里面只有一次提交
          if (resolvedConfig.mode === 'development') {
            logger.info('start plugin git-history');
 
            await gitHistory(
              ['./docs/pages/**/*.mdx'],
              './docs/generated/gitHistory.json',
              sidebar,
            );
 
            logger.info('end plugin git-history');
          }
        },
      },
    ]
  }
}
2025-04-05
2024-11-19
2024-08-14