dereuromark/composer-prefer-lowest

更严格地检查 prefer-lowest。CI 插件。

0.1.10 2021-11-02 02:20 UTC

This package is auto-updated.

Last update: 2024-09-04 04:21:05 UTC


README

CI Latest Stable Version Minimum PHP Version License Coding Standards Total Downloads

此验证器将严格比较您 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

  • 更好的版本处理,特别是像后缀这样的特殊情况。

非常感谢帮助。