spryker-sdk / composer-prefer-lowest
更严格地检查 prefer-lowest。CI 的附加组件。
Requires
- php: >=7.3
- ext-json: *
- composer/semver: ^1.7 || ^2.0 || ^3.0
Requires (Dev)
- fig-r/psr2r-sniffer: dev-master
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-21 22:04:53 UTC
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 spryker-sdk/composer-prefer-lowest
vendor/bin/validate-prefer-lowest
如果没有输出,那就好。 echo $?
应返回 0
(成功)。
CI 安装
建议仅在 CI 上运行,并使用 composer update --prefer-lowest
。因此,只需在这里有条件地添加即可。
例如,对于 Travis CI
php:
- 7.4
- 8.1
env:
global:
- DEFAULT=1
matrix:
include:
- php: 7.4
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 spryker-sdk/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.4,因此请确保您要测试的库也在这个(或更高)版本上运行 prefer-lowest
CI 任务。在这个版本已经结束支持的情况下,您根本不应该使用任何低于 7.4 的 PHP 版本,或者提供对其的支持。
建议您还提高 composer.json 中的最小 PHP 版本条目。使用 7.4 或更高版本
"require": {
"php": ">=7.4",
本地 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 spryker-sdk/composer-prefer-lowest && mv composer.backup composer.json",
然后运行 composer lowest-setup
来设置脚本,最后运行 composer lowest
来执行。
待办事项
- 改进版本处理,特别是关于后缀等特殊情况的处理。
非常感谢您的帮助。