thomasfielding / version
一个用于存储、计算和更新您应用程序版本号和历史的包。
Requires
- php: ^7.4|^8.0
- laravel/framework: ^8.0|^9.0
Requires (Dev)
- phpunit/phpunit: 9.5.x-dev
This package is auto-updated.
Last update: 2024-09-29 06:25:54 UTC
README
您可以使用Composer将此库添加到项目的本地依赖中。
composer require thomasfielding/version
这个包是什么?
此包旨在允许您在整个应用程序开发过程中记录版本更改。与其他包可能提供的相比,这是一个稍微更手动的过程,但这确实允许您在从单个代码库远程团队工作时,以更一致的方式记录主版本、次版本和补丁更新的系统。
安装后,它将在您的配置目录内生成一个配置文件 config/version.php。此文件包含一些设置,可修改此包的行为
- git:一个布尔值,如果您在项目中使用git源代码控制,则为true;否则为false。这只会改变git分支是否存储在版本日志中。
- initial:一个格式为1.13.4的字符串,默认为0.0.0,但您可以将其更改为修改应用程序的起始版本号,如果您将此包添加到现有产品中,而没有要转换的版本历史记录。
- root:这是您想要存储版本日志的位置,默认为
./version。 - template:这是一个可以添加的对象,用于添加额外的参数(自定义)到强制日志参数中;
branch_id、description、id、timestamp和type。
所有日志都存储为json文件,您可以手动编辑它们,并将作为您的代码库的一部分存储。每个git分支(如果您的配置设置中启用了git)只能创建一个日志。
如何使用
此包的主要用途是获取当前版本号和格式化的补丁说明。可以通过以下方式扩展ThomasFielding\Version\Services\VersionService来访问这些
public function __construct(VersionService $versionService) {
$this->versionService = $versionService;
}
或者如果您无法将依赖项注入到构造函数中
$this->versionService = new VersionService();
初始化后,您可以使用以下函数
$this->versionService->getVersionNumber():这将返回当前版本号(即1.13.4)$this->versionService->getPatchNotes():这将返回一个对象,您可以将它传递到前端。
命令
您可以使用3个不同的Artisan命令来生成、更新和检索应用程序的版本号。
-
php artisan version:current:此命令将返回应用程序的当前版本号(即1.13.4)。 -
php artisan version:log:此命令将在您的版本目录内创建一个新的日志json文件。文件名仅代表日志创建的时间,但不会影响运行顺序或应用程序的版本号,这是使用每个日志文件内的id和timestamp键来确定的。您可以向此命令传递一个参数和一个选项。 -
php artisan version:log major:这将创建一个主版本更新。通常用于史诗完成或添加大量更改,这些更改从根本上改变了应用程序的工作方式。 -
php artisan version:log minor:这将创建一个次版本更新。通常用于功能发布。 -
php artisan version:log patch:这将创建一个补丁版本更新。通常用于热修复和错误修复,如果没有提供参数,则为默认值。 -
php artisan version:log --description="您的日志信息在此处":创建日志后可以手动更新此信息,但这旨在模仿git提交消息的工作方式,并将显示为新版本号描述。 -
php artisan version:log:update:如果git设置为false,则将跳过所有功能。如果git启用并且当前分支存在日志,则将更新该日志的timestamp以反映当前时间戳。在创建拉取请求之前运行的好功能,以确保版本号更准确地反映发布顺序。
版本服务
此包的逻辑由名为 "版本服务" 的服务管理,可在命名空间 ThomasFielding\Version\Services\VersionService 下找到。作为此的一部分,提供了一些公共函数供您访问
-
getFileById:此函数允许您通过使用创建日志时生成的唯一id从特定版本日志中获取数据。这可以在每个日志创建的json文件中找到。需要一个参数,即string $id,这是要查找的id,如果没有找到,则返回null值。 -
getGitBranchId:一个更通用的函数,如果配置文件中设置了git: true,则可以获取git分支id。它可以抛出两个异常,即DuplicateLogException或UncommittedBranchException,这两个异常都会将它们的消息打印到终端。 -
getLogsByBranchId:根据您提供的git分支获取日志数据。这将基于git分支id获取,需要一个参数string $git,这可以从此服务中包含的getGitBranchId函数中获取。 -
getMajorVersionNumber:获取主版本号。接受一个参数?string $version,如果未设置,将获取应用程序的当前主版本,但也可以接受字符串major、minor或patch,取决于您想递增版本号的哪个元素。 -
getMinorVersionNumber:获取次要版本号。接受一个参数?string $version,如果未设置,将获取应用程序的当前次要版本,但也可以接受字符串major、minor或patch,取决于您想递增版本号的哪个元素。 -
getPatchVersionNumber:获取补丁版本号。接受一个参数?string $version,如果未设置,将获取应用程序的当前补丁版本,但也可以接受字符串major、minor或patch,取决于您想递增版本号的哪个元素。 -
getRoot:一个简单的函数,用于返回所有版本日志将存储的目录位置。 -
getVersionNumber:获取整个版本号作为字符串以显示(例如 1.13.4)。接受一个参数?string $version,如果未设置,将获取应用程序的当前版本,但也可以接受字符串major、minor或patch,取决于您想递增版本号的哪个元素。