【问题标题】:composer.json should uses different packages versions depending of php versioncomposer.json 应该根据 php 版本使用不同的包版本
【发布时间】:2015-12-11 04:56:07
【问题描述】:

travis-ci 允许在某些 PHP 版本上运行 phpunit

问题是我的composer.json 需要phpunit/phpunit=~4.8,并且在 phpunit 4.8.20 上声明不再支持 PHP 7.0+。此 PHP 版本应使用 PHP 5.6+ 支持的 phpunit/phpunit=~5.1

我的包需要在 PHP 5.4+ 上运行。

我可以通过不支持 PHP 5.4PHP 5.5 来解决这个问题,但是所有测试都可以在这个版本上完美运行,而在我的国家/地区这个版本还 em> 被很多主机使用。

我认为有可能做类似的事情:

"phpunit/phpunit": "if php < 7 then ~4.8 else ~5.1"

也许config.platform 帮助我?我也无法理解它是如何工作的。

【问题讨论】:

    标签: php composer-php travis-ci


    【解决方案1】:

    您可以在 Composer 中提出或要求。如果要说PHPUnit可以在4.8或5.x版本中使用,那就是:

    "phpunit/phpunit": "~4.8|~5.0"
    

    您必须在构建脚本中运行update,但 Composer 会根据它检测到的 PHP 版本来计算它。

    保持测试与任一版本的兼容性是您的责任,但 Travic 很快就会检测到故障,不是吗?

    【讨论】:

    • 感谢您的帮助,但它不起作用。它继续选择最后一个可用的版本。 :(travis-ci result
    • 正如我提到的:您必须在测试之前运行composer update,而不是install,因为install 将安装composer.lock 中定义的固定包。当您使用它时,您还应该为composer update --prefer-lowest 定义一个测试运行,它将安装可能需要的最旧版本。这将揭示代码中向后不兼容的更改,这些更改可能会访问您需要的旧版本中不存在的新功能。
    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多