CommitChangelog

了解如何使用 CommitChangelog 组件为您的组件或文件自动生成 Git 提交历史记录,实时展示最近的代码变更和改进。

用法

CommitChangelog 组件会根据指定的文件路径,从 GitHub 仓库获取该文件的提交历史,并以时间线形式展示。

基本用法

在您的 Markdown 文档中使用以下语法:

md
:commit-changelog

组件会自动根据当前页面路由推断组件名称,并获取对应文件的提交历史。

指定组件名称

md
:commit-changelog{name="Button"}

自定义文件路径

如果您的文件不在默认的 src 目录,可以自定义路径:

md
:commit-changelog{commitPath="packages/ui/src" name="Button"}

完整配置示例

md
::commit-changelog
---
commitPath: 'packages/core/src'
prefix: 'components'
suffix: 'ts'
name: 'useUser'
author: 'user@example.com'
---

这将查找 packages/core/src/components/useUser.ts?author=user@example.com 文件的提交历史。

工作原理

  1. 路径推断:组件会根据 name 属性或当前路由名称推断文件名
  2. 命名转换:支持多种文件命名格式(通过 casing 参数或全局配置控制)
    • auto(默认):Vue 组件(.vue 后缀)使用 PascalCase,其他文件使用 camelCase
    • kebab:保持 kebab-case 格式(如 use-useruse-user.ts
    • camel:转换为 camelCase(如 use-useruseUser.ts
    • pascal:转换为 PascalCase(如 use-userUseUser.ts
  3. 获取提交:调用 GitHub API 获取指定文件的提交历史
  4. 格式化显示:将提交信息格式化为易读的 Markdown,包含:
    • 提交 SHA(前 5 位)和链接
    • 提交信息(移除范围标注)
    • Issue 引用链接(如 #123
    • 内联代码高亮

前置要求

使用此组件需要:

  1. GitHub 配置: 在 app.config.ts 中配置 GitHub 相关信息(urlbranchcommitPath 等)。详见 GitHub 集成配置
  2. 环境变量: 需要在 .env 文件中配置 GitHub Personal Access Token:
NUXT_GITHUB_TOKEN=ghp_your_personal_access_token_here
GitHub Token 需要具有读取仓库提交历史的权限(repopublic_repo scope)。您可以在 GitHub Settings > Developer settings > Personal access tokens 创建新的 token。
如果未配置 NUXT_GITHUB_TOKEN,组件将不会报错,而是显示 "No recent changes"。
设置 per_page: 100 可以显著提升获取速度,减少 API 调用次数。API 会自动分页获取所有数据,不会丢失任何提交记录。
sinceuntil 参数的时间戳必须在 1970-01-01 到 2099-12-31 之间,否则可能返回异常结果。

API

Props

Prop Default Type
namestring

The name of the component or file to get the changelog for.

commitPath'src'string

The path to the file in the repository.

prefixstring

The prefix for the file path.

suffix'vue'string

The file extension.

authorstring

The author to filter commits by.

casing'auto'"auto" | "kebab" | "camel" | "pascal"

The casing format for the file name.

  • 'auto': Vue files use PascalCase, others use camelCase (default)
  • 'kebab': Keep kebab-case (e.g., use-user.ts)
  • 'camel': Convert to camelCase (e.g., useUser.ts)
  • 'pascal': Convert to PascalCase (e.g., UseUser.ts)

示例

显示 Vue 组件的提交历史

md
:commit-changelog{name="Accordion"}

输出示例:

  • a1b2c — fix: 修复折叠动画延迟问题 #45
  • d4e5f — feat: 添加 disabled 属性支持

显示 TypeScript 文件的提交历史

md
:commit-changelog{suffix="ts" name="useColorMode"}

按作者过滤提交

通过在 URL 查询参数中添加 author 可以只显示特定作者的提交:

md
:commit-changelog{author="user@example.com"}
author 参数可以是 GitHub 用户名或邮箱地址。例如:?author=octocat?author=user@example.com

完整示例:自定义路径和后缀

md
:commit-changelog{commitPath="packages/core/src" prefix="utils" suffix="ts" name="formatter" author="user@example.com"}

这将查找 packages/core/src/utils/formatter.ts?author=user@example.com 的提交历史。

使用 kebab-case 命名的文件

对于使用 kebab-case 命名的 composables 或 utils 文件:

md
:commit-changelog{suffix="ts" name="use-user" casing="kebab" commitPath="composables"}

这将查找 composables/use-user.ts 的提交历史。

如果项目中的文件统一使用 kebab-case 命名,建议在 app.config.ts 中全局配置 github.casing: 'kebab',这样就不需要在每个组件中重复指定。

全局配置命名格式

app.config.ts 中配置默认命名格式:

app.config.ts
export default defineAppConfig({
  github: {
    casing: 'kebab', // 全局默认使用 kebab-case
    // 其他配置...
  }
})

这样所有 CommitChangelog 组件都会默认使用 kebab-case,除非单独指定 casing 参数覆盖。

Changelog

e61d5 — feat: 添加文件命名格式配置支持

5a468 — feat: 增强主题定制系统并优化 UI 组件

a87b3 — feat: 增强 GitHub 提交 API 支持更多过滤和分页参数

b4084 — feat: 新增 CommitChangelog 组件

Copyright © 2024 - 2026