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"
}