eliashaeussler/version-bumper

Composer 插件,用于在发布准备期间提升项目版本

1.1.0 2024-09-24 09:56 UTC

This package is auto-updated.

Last update: 2024-09-27 02:39:25 UTC


README

版本提升工具

Coverage Maintainability CGL Tests Supported PHP Versions

一个 Composer 插件,用于在发布准备期间提升项目版本。提供了一个简单的 Composer 命令 bump-version,并提供了一个易于使用的 PHP API 以集成到其他框架中。

🔥 安装

Packagist Packagist Downloads

composer require --dev eliashaeussler/version-bumper

⚡ 使用方法

控制台命令 bump-version

$ composer bump-version <range> [-c|--config CONFIG] [--dry-run] [--strict]

将以下选项传递给控制台命令

  • <range>:要提升的版本范围,可以是以下之一
    • major/maj:提升版本到下一个主要版本(1.2.3 -> 2.0.0
    • minor/min:提升版本到下一个次要版本(1.2.3 -> 1.3.0
    • next/n/patch/p:提升版本到下一个补丁版本(1.2.3 -> 1.2.4
    • 显式版本,例如 1.3.0
  • -c/--config:配置文件路径,默认为当前工作目录的自动检测,也可以在 composer.json 中配置(见下文配置部分)。
  • --dry-run:不执行任何写操作,只计算并显示版本提升。
  • --strict:如果报告任何不匹配的文件模式,则失败。

PHP API

插件的主要入口点是 Version\VersionBumper 类。

use EliasHaeussler\VersionBumper;

// Define files and patterns in which to bump new versions
$filesToModify = [
    new VersionBumper\Config\FileToModify(
        'package.json',
        [
            '"version": "{%version%}"',
        ],
    ),
    new VersionBumper\Config\FileToModify(
        'src/Version.php',
        [
            'public const VERSION = \'{%version%}\';',
        ],
    ),
];

// Define package root path and version range
$rootPath = dirname(__DIR__);
$versionRange = VersionBumper\Enum\VersionRange::Minor;

// Bump versions within configured files
$versionBumper = new VersionBumper\Version\VersionBumper();
$results = $versionBumper->bump(
    $filesToModify,
    $rootPath,
    $versionRange,
);

// Display results
foreach ($results as $result) {
    // File: package.json
    echo sprintf('File: %s', $result->file()->path());
    echo PHP_EOL;

    foreach ($result->groupedOperations() as $operations) {
        foreach ($operations as $operation) {
            // Modified: 1.2.3 => 1.3.0
            echo sprintf(
                '%s: %s => %s',
                $operation->state()->name,
                $operation->source(),
                $operation->target(),
            );
            echo PHP_EOL;
        }
    }
}

📝 配置

使用控制台命令时,需要配置版本提升工具要执行的操作。

格式

目前支持以下文件格式

  • json
  • yamlyml

模式

配置文件必须遵循给定的模式

filesToModify:
  - path: relative/or/absolute/path/to/file
    patterns:
      # Each pattern must contain a {%version%} placeholder
      - '"version": "{%version%}"'
    reportUnmatched: true
# Relative (to config file) or absolute path to project root
rootPath: ../
  • filesToModify(必需):包含要提升的版本的文件列表。每个项接受以下属性
    • path(必需):文件的相对或绝对路径。相对路径从配置的(或计算出的)项目根目录计算。
    • patterns(必需):在配置的文件中搜索和替换的版本模式列表。每个模式必须包含一个 {%version%} 占位符,该占位符将替换为新的版本。模式内部转换为正则表达式,因此可以自由使用正则表达式语法,如 \s+
    • reportUnmatched(可选):如果配置的模式不匹配文件内容,则显示警告。与 --strict 命令选项结合使用很有用。
  • rootPath(可选):项目的相对或绝对路径根目录。此路径将用于计算配置为相对路径的配置文件的路径。如果根路径配置为相对路径,则基于配置文件路径进行计算。

提示

查看提供的 JSON 模式

composer.json 中的配置

可以通过 -c--config 命令选项传递配置文件路径,或者,作为 composer.json 中的配置。

{
    "extra": {
        "version-bumper": {
            "config-file": "path/to/version-bumper.json"
        }
    }
}

如果配置为相对路径,则配置文件路径基于 composer.json 文件的位置进行计算。

自动检测

如果没有显式配置配置文件,配置读取器尝试自动检测其位置。在自动检测过程中考虑以下顺序

  1. version-bumper.json
  2. version-bumper.yaml
  3. version-bumper.yml

🧑‍💻 贡献

请查看CONTRIBUTING.md

⭐ 许可证

本项目采用GNU通用公共许可证第3版(或更高版本)授权。