Skip to content
快速预览

生成Log说明md日志

✍️ w 🕒 2023-09-28 06:18:45(8 months ago) 🔗 C.前端工程化

在 npm 上,有许多插件可以用于生成项目的 changelog。以下是其中的一些插件:

  1. auto-changelog:

    • 描述: 一个命令行工具,用于从 git 标签和提交历史生成 changelog。
    • 查看详情
  2. @semantic-release/release-notes-generator:

    • 描述: Semantic-release 插件,用于使用 conventional-changelog 生成 changelog 内容。
    • 查看详情
  3. @changesets/changelog-github:

    • 描述: 一个为 GitHub 生成 changelog 条目的生成器,链接到提交、PR 和用户。
    • 查看详情
  4. @changesets/changelog-git:

    • 描述: 一个为 git 生成 changelog 条目的生成器,写入哈希值。
    • 查看详情
  5. 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"
}

Released under the MIT License.