梵语ick / version
掌握您的 Laravel 应用版本
Requires
- php: >=7.0
- laravel/framework: >=5.5.33
- pragmarx/yaml: ^1.0|^1.1|^1.2
- symfony/process: ^3.3|^4.0|^5.0|^6.0
Requires (Dev)
- orchestra/testbench: 3.4.*|3.5.*|3.6.*|3.7.*|4.*|5.*|6.*
- phpunit/phpunit: ~5|~6|~7|~8|~9
This package is auto-updated.
Last update: 2024-09-28 02:33:22 UTC
README
掌握您的 Laravel 应用版本
描述
此包是 Laravel (5.5+) 工具,可以帮助您保持和管理您的应用程序版本,增加版本号(主版本、次版本、修订版本、提交),还可以使用您的最后提交哈希值。
此包的最终结果是
- 在页面上打印版本。
- 在控制台打印,通过 Artisan 命令。
完全兼容 SemVer
此包可以解析 SemVer 版本
v2.0.1-alpha.1227
并将其转换为
label: v major: 2 minor: 0 patch: 1 prerelease: alpha buildmetadata: 1227 commit: 49ffe2
您可以使用格式化函数对其进行重写并显示在您的应用程序中,例如
MyApp version 2.0.1 - alpha 1227 (commit 49ffe2)
这些结果的使用案例可能包括
- 确保回滚成功。
- 了解更新是否到达所有服务器。
- 检查用户是否正在查看您的应用程序的最新版本。
- 验证 Travis CI 是否正在测试应测试的版本。
- 如果您喜欢版本化您的物品,并喜欢在所有页面上查看它们?那也很酷。 :)
- 您的使用案例是什么? 告诉我们!
功能
使用 YAML 配置文件轻松控制您的应用程序版本
version: current: major: 1 minor: 0 patch: 0 format: '{$major}.{$minor}.{$patch}' commit: mode: number number: 701036
使用您的 Git 提交作为您的应用程序提交哈希/编号
配置它
commit: mode: git-local
然后您可能会有这样的输出
MyApp version 1.0.0 (commit a9c03f)
或者只使用增量提交哈希/编号
commit: mode: number number: 701036
以获取
MyApp version 1.0.0 (commit 701036)
使用 Artisan 命令轻松增加版本号
php artisan version:commit
这将打印新的版本号
New commit: 701037 MyApp version 1.0.0 (commit 701037)
全部可用
php artisan version:major php artisan version:minor php artisan version:patch php artisan version:build
输出格式高度可配置
您可以配置
format: version: "{$major}.{$minor}.{$patch}" full: "version {{'format.version'}} (commit {$commit})" compact: "v{{'format.version'}}-{$commit}"
以下是 full
和 compact
格式的结果
MyApp version 1.0.0 (commit 701037) MyApp v1.0.0-701037
它为您提供了对动态方法的访问
Version::compact()
如果您创建了一个新的
format: awesome: "awesome version {$major}.{$minor}.{$patch}"
它也将可调用
Version::awesome()
有一个外观可用
Version::version() // 1.2.25 Version::commit() // 703110 Version::major() // 1 Version::minor() // 2 Version::patch() // 25 Version::format('full') // version 1.0.0 (commit 703110) Version::full() // version 1.0.0 (commit 703110) -- dynamic method Version::format('compact') // v.1.0.0-703110 Version::compact() // v.1.0.0-703110 -- dynamic method
实例化它
如果您不想使用外观
dd( Version::format() );
实例化它的最佳方式是
简单的 PHP 对象实例化
$version = new \Sanskritick\Version\Package\Version(); dd( $version->format() );
或从容器中获取已实例化的 Version 对象
dd( app(\Sanskritick\Version\Package\Version::class)->format() );
但是您必须确保您已经 发布配置文件
Blade 指令也已准备好在您的视图中使用
您可以使用此指令来渲染完整的版本格式
@version
或选择格式
@version('full') @version('compact')
您可以配置指令名称
blade_directive: printversion
然后
@printversion('compact')
Git 标签
您可以使用您的 Git 标签作为应用程序版本,您需要做的只是将版本源设置为 "git"
version_source: git
如果您在标签中添加了提交哈希/编号
$ git tag -a -f v0.1.1.3128
版本将使用它作为您的应用程序提交哈希/编号
匹配其他版本(git 标签)格式
您可能只需要更改 git 版本匹配器
git: ... version: matcher: "/[V|v]*[ersion]*\\s*\\.*(\\d+)\\.(\\d+)\\.(\\d+)\\.*(\\w*)/"
假设您将发布标签为
2017120299
YYYYMMDD##
您可以将匹配器更改为
git: version: matcher: "/(\d{4})(\d{2})(\d{2})(?:\d{2})/"
并从格式中删除点
format: compact: "v{$major}{$minor}{$patch}-{$commit}"
在您的代码中使用当前应用程序版本
以下是一个社区示例,说明如何将应用程序版本号记录到 Bugsnag 的异常日志中
<?php
namespace App\Exceptions;
use Sanskritick\Version\Package\Version;
use Bugsnag\BugsnagLaravel\Facades\Bugsnag;
class Handler extends ExceptionHandler
{
public function report(Exception $exception)
{
if ($this->shouldReport($exception)) {
Bugsnag::setAppVersion((new Version())->format('version'));
Bugsnag::notifyException($exception);
}
}
}
提交时间戳
此包还允许您吸收最后提交的时间戳或将当前日期存储到 version.yml 文件中。这是配置文件中的格式
timestamp:
year:
month:
day:
hour:
minute:
second:
timezone:
要吸收,您只需要配置 mode: absorb
然后执行
php artisan version:absorb
但是您也可以设置 mode: increment
然后执行
php artisan version:timestamp
将当前日期和时间存储到配置文件中
$ php artisan version:minor
New timestamp: 2019-09-16 18:23:03
MyApp version 2.3.2 (commit 49ffe2)
然后您可以使用它来在您的应用中显示
Version::format('timestamp-full')
工匠命令
这些是您可用的命令
版本:显示
显示当前应用版本
$ php artisan version:show
Sanskritick version 1.0.0 (build 701031)
$ php artisan version:show --format=compact
Sanskritick v1.0.0-701031
$ php artisan version:show --format=compact --suppress-app-name
v1.0.0-701031
版本:吸收
您需要设置 模式:吸收
。
版本可以吸收 git 版本并将提交写入配置文件,因此您可以删除 .git 文件夹,同时保留版本和提交信息以便快速访问。您必须在配置文件中配置 git_absorb
commit: #... git_absorb: git-local # "false", "git-local" or "git-remote"
然后运行它
$ php artisan version:absorb
实现吸收的常规配置设置是
version_source: config ## must be set as config current: major: 1 ## | minor: 0 ## | --> will be changed by absorb patch: 0 ## | git_absorb: git-local ## configure to get from local or remote commit: mode: number ## must be set as number number: f477c8 ## will be changed by absorb git_absorb: git-local ## configure to get from local or remote
版本:(主版本|次版本|补丁版本|提交)
您需要设置 模式:增加
。
增加版本项
$ php artisan version:minor
New minor version: 5
MyApp version 1.5.0 (commit 701045)
正则表达式匹配器
这是当前用于分割版本字符串的正则表达式
^(?P<label>[v|V]*[er]*[sion]*)[\.|\s]*(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
您可以在网上测试它: https://regex101.com/r/Ly7O1x/42
安装
通过 Composer
composer require sanskritick/version
然后发布您将拥有的配置文件
php artisan vendor:publish --provider="Sanskritick\Version\Package\ServiceProvider"
然后您应该可以在您的视图中使用它
@version
由于 git 版本是缓存的,您可以通过向 post-autoload-dump
添加刷新命令来告诉 Composer 每次更新或安装时刷新您的版本号
"post-autoload-dump": [ ... "@php artisan version:refresh" ]
[可选] 您还可以通过在 .git/hooks/post-commit
中设置来自动化此过程。一旦您进行了提交,它将自动运行命令。
#!/bin/sh
php artisan version:refresh
如果您在使用 Git 提交作为提交号,您可能需要将 git 仓库添加到您的 .env 文件中
VERSION_GIT_REMOTE_REPOSITORY=https://github.com/antonioribeiro/version.git
如果您使用 git-local
,请确保当前文件夹是 git 仓库
最低要求
- Laravel 5.5
- PHP 7.0
测试
composer test
故障排除
- 如果您因为 symfony/router (3.3/3.4) 或 symfony/yaml (3.3/3.4) 而无法安装,您可以尝试
rm -rf vendor rm composer.lock composer install
作者
许可
本软件包采用 MIT 许可证授权 - 请参阅 LICENSE
文件以获取详细信息
贡献
欢迎提交拉取请求和问题。