是否可以告诉作曲家在有多个匹配需求时始终选择较低的包版本


Is it possible to tell composer to always choose lower package version, when there are more then one matching requiremnets

>我有一个使用"satooshi/php-coveralls"包来计算TravisCI覆盖率的软件包。Coveralls composer.json 需要:

"require": {
        "php": ">=5.3.3",
        "ext-json": "*",
        "ext-simplexml": "*",
        "guzzle/guzzle": "^2.8|^3.0",
        "psr/log": "^1.0",
        "symfony/config": "^2.1|^3.0",
        "symfony/console": "^2.1|^3.0",
        "symfony/stopwatch": "^2.0|^3.0",
        "symfony/yaml": "^2.0|^3.0"
    },

我的软件包不直接使用这些软件包中的任何一个,但我支持 PHP 5.4,这反过来又需要使用所有这些软件包的较低版本。有没有办法告诉作曲家使用 guzzle/guzzle:^2.8 而不是 ^3.0,symfony/config:^2.1 而不是 ^3.0 等。目前,当我运行作曲家安装时,安装了更高的版本,因此在 PHP 5.4 上构建失败

运行作曲家时有一个首选最低选项。以下是更多详细信息

https://evertpot.com/testing-composer-prefer-lowest/

你可以使用 ~ ("波浪号")

"guzzle/guzzle": "~2.8",

这意味着

>= 2.8 < 3.0.0

"guzzle/guzzle": "^2.8", 

应该工作

甚至更多 2. 但小于 3 的任何更高版本。

"guzzle/guzzle": "^2.*", 

"guzzle/guzzle": "~2.*",

https://getcomposer.org/doc/articles/versions.md