Appearance
在 npm 上,有许多插件可以用于生成项目的 changelog。以下是其中的一些插件:
auto-changelog:
- 描述: 一个命令行工具,用于从 git 标签和提交历史生成 changelog。
- 查看详情
@semantic-release/release-notes-generator:
- 描述: Semantic-release 插件,用于使用 conventional-changelog 生成 changelog 内容。
- 查看详情
@changesets/changelog-github:
- 描述: 一个为 GitHub 生成 changelog 条目的生成器,链接到提交、PR 和用户。
- 查看详情
@changesets/changelog-git:
- 描述: 一个为 git 生成 changelog 条目的生成器,写入哈希值。
- 查看详情
git-cliff:
- 描述: 一个高度可定制的 Changelog 生成器,遵循 Conventional Commit 规范。
- 查看详情
auto-changelog
auto-changelog 是一个命令行工具,用于从 git 标签和提交历史生成 changelog。以下是其主要用法和功能:
安装
bash
npm install -D auto-changelog基本用法
如果全局安装在 git 仓库的根目录下运行 auto-changelog。它在后台运行 git log 以解析提交历史。
bash
auto-changelog选项
-o, --output [file]: 输出文件,默认为CHANGELOG.md。-c, --config [file]: 配置文件位置,默认为.auto-changelog。-t, --template [template]: 使用的模板(例如:compact,keepachangelog,json),默认为compact。-r, --remote [remote]: 用于链接的 git 远程,默认为origin。-p, --package: 使用package.json中的版本作为最新发布。-v, --latest-version [version]: 使用指定的版本作为最新发布。-u, --unreleased: 包括未发布的更改部分。-l, --commit-limit [count]: 每个发布显示的提交数量,默认为 3。--commit-url [url]: 覆盖提交的 URL,使用{id}作为提交 id。--issue-url [url]: 覆盖问题的 URL,使用{id}作为问题 id。--merge-url [url]: 覆盖合并的 URL,使用{id}作为合并 id。--compare-url [url]: 覆盖比较的 URL,使用{from}和{to}作为标签。--issue-pattern [regex]: 覆盖提交消息中的问题模式。--breaking-pattern [regex]: 突破性更改提交的正则模式。--merge-pattern [regex]: 添加合并提交的自定义正则模式。--ignore-commit-pattern [regex]: 解析提交时要忽略的模式。--tag-pattern [regex]: 覆盖版本标签的正则模式。--tag-prefix [prefix]: 版本标签中使用的前缀,默认为v。--starting-version [tag]: 在 changelog 中包括的最早版本。--ending-version [tag]: 在 changelog 中包括的最新版本。--sort-commits [property]: 按属性对提交进行排序(例如:relevance,date,subject),默认为relevance。--release-summary: 将标记的提交消息体显示为发布摘要。--unreleased-only: 仅输出未发布的更改。--hide-empty-releases: 隐藏空的发布。--hide-credit: 隐藏 auto-changelog 信用。--handlebars-setup [file]: handlebars 设置文件。--append-git-log [string]: 附加到 git log 命令的字符串。--append-git-tag [string]: 附加到 git 标签命令的字符串。--prepend: 在输出文件前面添加 changelog。--stdout: 将 changelog 输出到 stdout。
示例
- 将日志写入当前目录的
CHANGELOG.md:
bash
auto-changelog- 使用
keepachangelog模板将日志写入HISTORY.md:
bash
auto-changelog --output HISTORY.md --template keepachangelog- 禁用提交限制,为每个发布渲染所有提交:
bash
auto-changelog --commit-limit false此外,auto-changelog 还提供了许多高级功能,如 URL 覆盖、添加到现有的 changelog、配置、标签前缀、标签模式、突破性更改、自定义问题模式、自定义模板等。
在项目中配置文件
配置可以放在您的 package.json 文件中或在一个名为 .auto-changelog 的单独配置文件中:
json
{
"auto-changelog": {
"output": "CHANGELOG.md",
"template": "keepachangelog",
"unreleased": true,
"commitLimit": false,
"tagPrefix": "v",
"sortCommits": "relevance",
"replaceText": {
"(#\\d+)": "[`$1`](https://github.com/your-username/your-repo/issues/$1)"
},
"issueUrl": "https://github.com/your-username/your-repo/issues/{id}",
"commitUrl": "https://github.com/your-username/your-repo/commit/{id}",
"mergeUrl": "https://github.com/your-username/your-repo/pull/{id}",
"compareUrl": "https://github.com/your-username/your-repo/compare/{from}...{to}",
"issuePattern": "#(\\d+)",
"breakingPattern": "BREAKING CHANGE:"
}
}配置解释:
output: changelog 文件的输出位置。template: 使用的模板。keepachangelog是一个流行的 changelog 格式。unreleased: 是否包括未发布的更改部分。commitLimit: 每个版本显示的提交数量。设置为false会显示所有提交。tagPrefix: 版本标签的前缀。sortCommits: 按 relevance(相关性)对提交进行排序。replaceText: 用于在日志中替换文本的正则表达式。这里,它将#123这样的问题引用替换为一个链接到 GitHub 问题的链接。issueUrl,commitUrl,mergeUrl,compareUrl: 这些是用于生成链接的 URL 模板。issuePattern: 用于从提交消息中解析问题引用的正则表达式。breakingPattern: 用于识别破坏性更改的提交消息的正则表达式。
使用
在想你 package.json 文件中配置指令
json
"scripts": {
"version": "auto-changelog -p && git add CHANGELOG.md"
}