dereuromark / composer-prefer-lowest
更严格地检查 prefer-lowest。CI 插件。
Requires
- php: >=7.3
- ext-json: *
- composer/semver: ^1.4 || ^2.0 || ^3.0
Requires (Dev)
- fig-r/psr2r-sniffer: dev-master
- phpunit/phpunit: ^9.5
README
此验证器将严格比较您 composer.json 中指定的最小版本与 prefer-lowest
composer update 命令选项实际使用的版本。
这对于所有希望确保
- 每个依赖项定义的最小版本实际上仍在被测试的库很有用
- 没有静默回归(如使用依赖库过新的方法)悄悄混入
有关详细信息,请参阅 为什么和何时这样做是有用的?。这是在 Composer 没有这种 动力 之后构建的。
框架的必需品
- 框架
- 框架插件/插件(以及针对框架次版本号的测试)
- 用于至少有一个依赖其他库的应用/项目的自定义库
涉及包遵循 semver 在这里非常重要。否则,比较中可能存在一些问题。
对于项目来说,这并不是很有用,因为这里没有测试最新版本已使用的任何东西的必要。此外,如果您的库没有依赖项,您也可以跳过 prefer-lowest 检查以及此验证。
本地测试运行
您想为您的库之一快速测试吗?看看它会产出什么结果?
composer update --prefer-lowest --prefer-dist --prefer-stable
composer require --dev --update-with-all-dependencies dereuromark/composer-prefer-lowest
vendor/bin/validate-prefer-lowest
如果没有输出,那很好。 echo $?
应返回 0
(成功)。
CI 安装
建议仅在 CI 和 composer update --prefer-lowest
下运行。因此,只需在此处有条件地添加即可。
例如,对于 Travis CI
php:
- 7.3
- 8.1
env:
global:
- DEFAULT=1
matrix:
include:
- php: 7.3
env: PREFER_LOWEST=1
before_script:
- if [[ $PREFER_LOWEST != 1 ]]; then composer install --prefer-source --no-interaction; fi
- if [[ $PREFER_LOWEST == 1 ]]; then composer update --prefer-lowest --prefer-dist --prefer-stable --no-interaction; fi
- if [[ $PREFER_LOWEST == 1 ]]; then composer require --dev dereuromark/composer-prefer-lowest; fi
script:
- if [[ $DEFAULT == 1 ]]; then vendor/bin/phpunit; fi
- if [[ $PREFER_LOWEST == 1 ]]; then vendor/bin/validate-prefer-lowest; fi
当然,您也可以直接将其包含在 require-dev
中。在手动在本地运行 composer update --prefer-lowest
之后,您也可以在您的本地计算机上测试此功能
vendor/bin/validate-prefer-lowest
如果发现任何违规行为,则返回错误列表并退出错误代码 1
。否则,它将以成功代码 0
返回。
首选稳定版
通常 composer update --prefer-lowest
就足够了。请确保您的 composer.json 中有 "prefer-stable": true
以使其生效。否则,您可能必须使用上面概述的较长版本。
通常最好在您的 CI 脚本中使用所有标志
composer update --prefer-lowest --prefer-dist --prefer-stable --no-interaction
仅主版本
如果您只想为主要的约束问题错误 CI 构建,请使用 --majors-only
/-m
选项
vendor/bin/validate-prefer-lowest -m
补丁和次要问题将仅作为警告。
仅显示
如果您只想在 CI 报告中显示结果而不失败构建,则可以这样做
vendor/bin/validate-prefer-lowest || true
PHP 版本
通常:使用在您的 composer.json 中定义的 prefer-lowest
的最小 PHP 版本。
此工具需要最小 PHP 7.3,因此请确保您要测试的库也在此(或更高)版本上运行 prefer-lowest
CI 作业。在此阶段,由于它已经过时,您无论如何都不应使用低于 7.3 的任何 PHP 版本,或者提供对其的支持。
建议您还提高 composer.json 中最小 PHP 版本的条目。使用 7.3 或更高版本
"require": {
"php": ">=7.3",
本地 Composer 脚本安装
对于本地测试,如果您不想修改您的 composer.json 文件,可以简单地添加此 composer 脚本
"scripts": {
...
"lowest": " validate-prefer-lowest",
"lowest-setup": "composer update --prefer-lowest --prefer-stable --prefer-dist --no-interaction && cp composer.json composer.backup && composer require --dev --update-with-all-dependencies dereuromark/composer-prefer-lowest && mv composer.backup composer.json",
然后运行 composer lowest-setup
以设置脚本,最后运行 composer lowest
以执行。
TODOs
- 更好的版本处理,特别是像后缀这样的特殊情况。
非常感谢帮助。