spryker-sdk/composer-prefer-lowest

更严格地检查 prefer-lowest。CI 的附加组件。

0.1.0 2022-10-20 09:04 UTC

This package is auto-updated.

Last update: 2024-09-21 22:04:53 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 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 来执行。

待办事项

  • 改进版本处理,特别是关于后缀等特殊情况的处理。

非常感谢您的帮助。