release-it 的常规变更日志插件
这个插件将为 release-it 提供推荐的版本升级,并更新变更日志文件(例如 CHANGELOG.md
)。
npm install --save-dev @release-it/conventional-changelog
配置
在 release-it 配置中,例如:
"plugins": {
"@release-it/conventional-changelog": {
"preset": {
"name": "angular"
},
"infile": "CHANGELOG.md"
}
}
选项将原样传递给 conventional-recommended-bump 和 conventional-changelog-core。
preset
可以使用以下预设之一:
angular
atom
codemirror
conventionalcommits
ember
eslint
express
jquery
jscs
jshint
使用带有 name
和 types
的对象来使用自定义预设:
"plugins": {
"@release-it/conventional-changelog": {
"infile": "CHANGELOG.md",
"preset": {
"name": "conventionalcommits",
"types": [
{
"type": "feat",
"section": "Features"
},
{
"type": "fix",
"section": "Bug Fixes"
},
{}
]
}
}
}
有关传递给 preset
的配置对象,请参阅 常规变更日志配置规范 (v2.1.0)。
infile
默认值:undefined
- 将文件名设置为
infile
以写入变更日志。如果该文件尚不存在,将创建包含完整历史记录的文件。 - 当未设置
infile
时,此插件生成的变更日志仍将用作发布说明,例如 GitHub Releases。 - 设置
infile: false
以禁用变更日志写入(仅使用推荐的升级版本)。
header
设置变更日志文档的主标题:
{
"plugins": {
"@release-it/conventional-changelog": {
"infile": "CHANGELOG.md",
"header": "# Changelog",
"preset": {
"name": "conventionalcommits"
}
}
}
}
ignoreRecommendedBump
默认值:false
设置为 true
以忽略推荐的升级版本,并使用 release-it 提供的版本(命令行参数或提示)。
(请注意,变更日志预览显示推荐的升级版本,因为尚不知道所需的版本。infile
将具有正确的版本。)
strictSemVer
默认值:false
设置为 true
以严格遵循语义化版本,包括连续的预发布版本。这意味着从预发布版本开始,推荐的升级将导致下一个版本的下一个预发布版本。
例如,从 1.0.0-alpha.0
开始,推荐的 minor
升级将导致 preminor
升级到 1.1.0-alpha.0
(而没有此标志的默认行为会导致 prerelease
升级到 1.0.0-alpha.1
)。
context
默认值:undefined
此选项将作为第二个参数(context
)传递给 conventional-changelog-core,例如:
"plugins": {
"@release-it/conventional-changelog": {
"context": {
"linkCompare": false
}
}
}
gitRawCommitsOpts
默认值:undefined
git-raw-commits
的选项。例如,您可以使用以下选项将合并提交包含在变更日志中:
{
"plugins": {
"@release-it/conventional-changelog": {
"gitRawCommitsOpts": {
"merges": null
}
}
}
}
parserOpts
默认值:undefined
conventional-commits-parser
的选项。例如,您可以使用以下选项在解析提交消息时设置合并模式:
{
"plugins": {
"@release-it/conventional-changelog": {
"parserOpts": {
"mergePattern": "^Merge pull request #(\\d+) from (.*)$"
}
}
}
}
writerOpts
默认值:undefined
conventional-changelog-writer
的选项。例如,您可以使用以下选项将提交按默认的"scope"而不是"type"进行分组。
{
"plugins": {
"@release-it/conventional-changelog": {
"writerOpts": {
"groupBy": "scope"
}
}
}
}
如果您想自定义用于编写变更日志的模板,可以在 .release-it.js
文件中这样做:
const fs = require('fs');
const commitTemplate = fs.readFileSync('commit.hbs').toString();
module.exports = {
plugins: {
'@release-it/conventional-changelog': {
writerOpts: {
commitPartial: commitTemplate
}
}
}
};
命令行
可以从命令行设置此插件的选项。一些示例:
release-it --plugins.@release-it/conventional-changelog.infile=history.md
release-it --no-plugins.@release-it/conventional-changelog.infile
- 键由点分隔。
- 可以通过在键前加上
no-
来否定值。 - 参数可能需要用单引号(
'
)括起来,例如--'deep.key=value'
或'--deep.key=value'
根据您的 shell 或操作系统,这可能会有所不同。
GitHub Actions
在 GitHub Action 中使用此插件时,请确保设置 fetch-depth: 0
,以便可以使用历史记录来确定正确的推荐升级版本和变更日志。
另请参阅 https://github.com/release-it/release-it/blob/master/docs/ci.md#github-actions