eliashaeussler / version-bumper
Composer 插件,用于在发布准备期间提升项目版本
1.1.0
2024-09-24 09:56 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- composer-plugin-api: ^2.0
- cuyz/valinor: ^1.0
- symfony/console: ^5.4 || ^6.4 || ^7.0
- symfony/filesystem: ^5.4 || ^6.4 || ^7.0
- symfony/yaml: ^5.4 || ^6.4 || ^7.0
Requires (Dev)
- armin/editorconfig-cli: ^1.8 || ^2.0
- composer/composer: ^2.2
- eliashaeussler/php-cs-fixer-config: ^2.0
- eliashaeussler/phpstan-config: ^2.0
- eliashaeussler/rector-config: ^3.0
- ergebnis/composer-normalize: ^2.30
- phpstan/extension-installer: ^1.2
- phpstan/phpstan-phpunit: ^1.1
- phpstan/phpstan-symfony: ^1.4
- phpunit/phpunit: ^10.2 || ^11.0
This package is auto-updated.
Last update: 2024-09-27 02:39:25 UTC
README
版本提升工具
一个 Composer 插件,用于在发布准备期间提升项目版本。提供了一个简单的 Composer 命令 bump-version
,并提供了一个易于使用的 PHP API 以集成到其他框架中。
🔥 安装
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
yaml
,yml
模式
配置文件必须遵循给定的模式
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
文件的位置进行计算。
自动检测
如果没有显式配置配置文件,配置读取器尝试自动检测其位置。在自动检测过程中考虑以下顺序
version-bumper.json
version-bumper.yaml
version-bumper.yml
🧑💻 贡献
请查看CONTRIBUTING.md
。
⭐ 许可证
本项目采用GNU通用公共许可证第3版(或更高版本)授权。