marcocesarato/php-conventional-changelog

从项目的提交消息和元数据生成变更日志和发布说明,并使用 semver.org 和 conventionalcommits.org 自动化版本管理


README

PHP Conventional Changelog

Version Requirements Conventional Commits License GitHub

如果这个项目帮到了您,请用一颗星⭐支持我们


描述

当一个软件项目的版本发布时,生成让项目用户了解更改和其他相关笔记的文档是很方便的。

这个包可以帮助自动生成变更日志和发布说明文件,以便项目的开发者减少完成和检查项目新版本所需的工作。

此包可以使用 composer 从项目的提交历史消息和元数据生成变更日志,并使用 semverconventional-commits 自动化版本管理。

它提供了一个可以在终端或使用 composer 脚本运行的命令,用于为当前项目生成一个 markdown 格式的变更日志文件。

该命令可以接受参数,定义项目的发布版本,以从中提取更改并生成文件。该包使用一个配置系统,允许您自定义希望生成的变更日志的设置。

查看我们的 CHANGELOG 文件,如果您正在寻找一个可能的最终结果示例。

如何贡献

有想法?发现了一个错误?请提交到 ISSUESPULL REQUEST。欢迎贡献,并将非常感激!每一份努力都有助于。

📘 要求

📖 安装

您可以使用 composer 轻松安装它

composer require --dev marcocesarato/php-conventional-changelog

脚本 (可选)

为了方便使用变更日志生成器或更快地发布新版本,您可以将以下脚本添加到您的 composer.json

注意:您可以根据需要自定义它

{
  ...
  "scripts": {
    "changelog": "conventional-changelog",
    "release": "conventional-changelog --commit",
    "release:patch": "conventional-changelog --patch --commit",
    "release:minor": "conventional-changelog --minor --commit",
    "release:major": "conventional-changelog --major --commit"
  },
  ...
}

现在您只需运行 composer changelogcomposer release(后者将自动增加版本代码并提交更改)来生成您的变更日志。

📘 配置

注意:此过程是 可选的,允许覆盖/合并默认设置

为了自定义设置,您只需在项目的根目录/工作目录创建一个名为 .changelog 的文件,或使用 --config 选项指定配置文件的位置。

注意

  • 如果配置文件中的设置不必要,则省略它
  • 默认忽略的类型有: buildchorecidocsperfrefactorrevertstyletest
  • 要允许所有类型,请保持 types 为空,并设置 ignoreTypes 为空

您可以在 配置文档 中找到更多信息。

💻 使用

更改日志生成器将从最后一个标签的日期生成到当前日期的更改日志,并将所有提交日志放在刚刚创建的最新版本中。

注意

  • 示例中列出的一些选项可以同时使用(例如:--first-release --commit
  • 如果没有指定发布方法,则默认启用使用语义版本控制MAJOR.MINOR.PATCH)自动增加版本代码。
    • MAJOR:至少有一个重大更改。
    • MINOR:至少有一个新功能。
    • PATCH:默认
  • 使用以下选项指定发布方法:--major--minor--patch--rc--beta--alpha

示例

第一个版本

注意:仅在不需要所有历史更改或为第一个版本时使用此选项,否则请使用带有--history选项的运行

要生成第一个版本的更改日志,请运行

php vendor/bin/conventional-changelog --first-release

新版本

要生成更改日志(不提交文件)

php vendor/bin/conventional-changelog

新发布(带有提交和标签)

要生成带有自动提交和自动版本化标签的更改日志,请运行

php vendor/bin/conventional-changelog --commit

或要修改现有提交,可以运行

php vendor/bin/conventional-changelog --amend

历史

要生成包含所有发布更改历史记录的更改日志

警告:如果该文件已存在,此操作将覆盖CHANGELOG.md文件

php vendor/bin/conventional-changelog --history

日期范围

要生成从指定日期到另一个指定日期的更改日志

php vendor/bin/conventional-changelog --from-date="2020-12-01" --to-date="2021-01-01"

标签范围

要生成从指定标签到另一个指定标签的更改日志

php vendor/bin/conventional-changelog --from-tag="v1.0.2" --to-tag="1.0.4"

特定版本

要生成具有特定版本代码的更改日志

php vendor/bin/conventional-changelog --ver="2.0.1"

命令列表

信息:有关运行 php vendor/bin/conventional-changelog --help 的更多信息

Description:
  Generate changelogs and release notes from a project's commit messagesand metadata and automate versioning with semver.org and conventionalcommits.org

Usage:
  changelog [options] [--] [<path>]

Arguments:
  path                               Specify the path directory where generate changelog

Options:
      --config=CONFIG                Specify the configuration file path
  -c, --commit                       Commit the new release once changelog is generated
  -a, --amend                        Amend commit the new release once changelog is generated
      --commit-all                   Commit all changes the new release once changelog is generated
      --first-release                Run at first release (if --ver isn't specified version code it will be 1.0.0)
      --from-date=FROM-DATE          Get commits from specified date [YYYY-MM-DD]
      --to-date=TO-DATE              Get commits last tag date (or specified on --from-date) to specified date [YYYY-MM-DD]
      --from-tag=FROM-TAG            Get commits from specified tag
      --to-tag=TO-TAG                Get commits last tag (or specified on --from-tag) to specified tag
      --major                        Major release (important changes)
      --minor                        Minor release (add functionality)
      --patch                        Patch release (bug fixes) [default]
      --rc                           Release candidate
      --beta                         Beta release
      --alpha                        Alpha release
      --ver=VER                      Specify the next release version code (semver)
      --history                      Generate the entire history of changes of all releases
      --no-verify                    Bypasses the pre-commit and commit-msg hooks
      --no-tag                       Disable release auto tagging
      --no-change-without-commits    Do not apply change if no commits
      --annotate-tag[=ANNOTATE-TAG]  Make an unsigned, annotated tag object once changelog is generated [default: false]
      --merged                       Only include commits whose tips are reachable from HEAD
  -h, --help                         Display help for the given command. When no command is given display help for the changelog command