语法演变 / 版本
掌握您的 Laravel 应用版本控制权
Requires
- php: ^7.0
- laravel/framework: >=7.0
- pragmarx/yaml: ^0.3
- symfony/process: >=5.0
Requires (Dev)
- orchestra/testbench: 3.4.*|3.5.*|3.6.*|3.7.*
- phpunit/phpunit: ~5|~6|~7
README
掌握您的 Laravel 应用版本控制权
描述
此包是 Laravel (5.5+) 实用工具,帮助您保持和管理应用程序版本,递增版本号(主要、次要、修补、构建),还可以使用您最后提交的哈希值作为构建号。
此包的最终结果是
- 在页面上打印版本号。
- 在控制台通过 Artisan 命令打印。
这些结果的一些用例可以是
- 确保回滚成功。
- 了解更新是否已到达所有服务器。
- 检查用户是否正在查看您的应用的最新版本。
- 验证 Travis CI 是否正在测试它应该测试的版本。
- 您喜欢版本化您的产品,并喜欢在所有页面上查看它们?那也很酷。 :)
- 您的用例是什么? 告诉我们!
功能
使用 YAML 配置文件轻松控制您的应用版本
version: current: major: 1 minor: 0 patch: 0 format: '{$major}.{$minor}.{$patch}' build: mode: number number: 701036
使用您的 git 提交作为您的应用构建号
配置它
build: mode: git-local
然后您可能得到这样的输出
MyApp version 1.0.0 (build a9c03f)
或者只使用递增的构建号
build: mode: number number: 701036
来获取
MyApp version 1.0.0 (build 701036)
使用 Artisan 命令轻松递增版本号
$ php artisan version:build
它应该打印新的版本号
New build: 701037 MyApp version 1.0.0 (build 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'}} (build {$build})" compact: "v{{'format.version'}}-{$build}"
这些是 full
和 compact
格式的结果
MyApp version 1.0.0 (build 701037)
MyApp v1.0.0-701037
它为您提供了对动态方法的访问
Version::compact()
如果您创建了新的方法
format: awesome: "awesome version {$major}.{$minor}.{$patch}"
它也将变得可调用
Version::awesome()
提供了一个门面
Version::version() // 1.2.25 Version::build() // 703110 Version::major() // 1 Version::minor() // 2 Version::patch() // 25 Version::format('full') // version 1.0.0 (build 703110) Version::full() // version 1.0.0 (build 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 \SyntaxEvolution\Version\Package\Version(); dd( $version->format() );
或者从容器中获取已实例化的 Version 对象
dd( app(\SyntaxEvolution\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}-{$build}"
在您的代码中使用当前应用程序版本
以下是一个社区示例,说明如何在记录异常到 Bugsnag 时发送应用程序版本号
<?php
namespace App\Exceptions;
use SyntaxEvolution\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);
}
}
}
Artisan 命令
以下是您可用的命令
version:show
显示当前应用程序版本
$ php artisan version:show
SyntaxEvolution version 1.0.0 (build 701031)
$ php artisan version:show --format=compact
SyntaxEvolution v1.0.0-701031
$ php artisan version:show --format=compact --suppress-app-name
v1.0.0-701031
version:(major|minor|patch|build)
递增版本项
$ php artisan version:minor
New minor version: 5
MyApp version 1.5.0 (build 701045)
version:refresh
清除缓存并刷新版本
$ php artisan version:refresh
Version was refreshed.
SyntaxEvolution version 1.0.0 (build 4f76c)
version:absorb
这需要您使用注解标签。
版本可以吸收 git 版本和构建到配置文件,这样您就可以删除 .git 文件夹,同时仍然可以快速访问版本和构建缓存。您必须在配置文件中配置 git_absorb
。
build: #... 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 build: 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
安装
通过Composer
$ composer require syntaxevolution/version
然后发布配置文件,您需要
$ php artisan vendor:publish --provider="SyntaxEvolution\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
文件
贡献
欢迎提交拉取请求和问题。