为什么作曲家不按Caret版本范围提取较新的软件包?

时间:2018-11-28 22:42:53

标签: composer-php

我的composer.json

{
    "name": "foo/boo",
    "description": "bar",
    "type": "project",
    "require": {
        "php": ">=7.2.0",
        "yiisoft/yii2": "~2.0.15",
        "bar/foo": "^0.1.0"
    },
    "config": {
        "process-timeout": 1800,
        "fxp-asset": {
            "enabled": false
        }
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://asset-packagist.org"
        },
        {
            "type": "git",
            "url": "ssh://deployer@gerrit.foo.pl:29418/bar"
        }
    ]
}

Caret Version Range的Composer文档说,我对bar/foo软件包的版本请求应类似于:> = 0.1.0和<1.0.0。

但是在composer update之后,我得到了0.1.0版本。 我的bar / foo软件包具有标签:

$ cd /vendor/my-bar-foo-package
$ git tag --list
v0.1.0
v0.2.0
v0.2.1
v0.2.2

偶然机会向`“ bar / foo”请求版本:“ 0.2.2”作曲者更新拉动v0.2.2,为什么“ ^ 0.1.0”没有?

1 个答案:

答案 0 :(得分:2)

  

Caret Version Range的Composer文档说,我对bar / foo软件包的版本请求应类似于:> = 0.1.0和<1.0.0。

不,不是:

  

对于1.0之前的版本,它也出于安全考虑,将^0.3视为>=0.3.0 <0.4.0

     

https://getcomposer.org/doc/articles/versions.md#caret-version-range-

因此它按预期方式工作-^0.1.0等效于>=0.1.0 <0.2.0,而0.2.2发行版与此约束不匹配。