作曲家始终会安装软件包的最新版本

时间:2020-04-26 16:30:10

标签: php laravel composer-php

我的软件包mailbase中有两个新的发行版v1.0.0v0.2.0

v1.0.0的打包约束为^ 7.0

"laravel/framework": "^7.0"

v0.2.0具有程序包约束

"laravel/framework": "^5.0|^6.0"

但是当我安装此软件包时

composer require tkeer/mailbase

无论laravel版本(laravel5,laravel6或laravel7)如何,作曲家始终会安装v1.0.0。应该为laravel6和laravel5安装v0.2.0吗?

3 个答案:

答案 0 :(得分:1)

作曲家总是选择要安装的最新版本

此处是通过composer安装软件包的语法

composer require vendor/package:version

指定要安装的版本

composer require tkeer/mailbase:0.2.0

答案 1 :(得分:0)

实际上您的plugins composer.json告诉了这个

V1.0.0只能在Laravel 7.0及更高版本上运行

v0.2.0可以从5.0到6.0在所有Laravel上运行 v0.2.0可以在从6.0到7.0的所有Laravel上运行

从版本6.0到7.0可以添加^ 6.0品牌

如果我无法解释这一点,请查看此URL以获取更多信息

https://getcomposer.org/doc/articles/versions.md#writing-version-constraints

"require": {
    "vendor/package": "1.3.2", // exactly 1.3.2

    // >, <, >=, <= | specify upper / lower bounds
    "vendor/package": ">=1.3.2", // anything above or equal to 1.3.2
    "vendor/package": "<1.3.2", // anything below 1.3.2

    // * | wildcard
    "vendor/package": "1.3.*", // >=1.3.0 <1.4.0

    // ~ | allows last digit specified to go up
    "vendor/package": "~1.3.2", // >=1.3.2 <1.4.0
    "vendor/package": "~1.3", // >=1.3.0 <2.0.0

    // ^ | doesn't allow breaking changes (major version fixed - following semver)
    "vendor/package": "^1.3.2", // >=1.3.2 <2.0.0
    "vendor/package": "^0.3.2", // >=0.3.2 <0.4.0 // except if major version is 0
}

答案 2 :(得分:0)

在运行composer require tkeer/mailbase时,没有任何其他版本限制,Composer会计算该软件包的哪些版本与当前其他所需的软件包兼容。已安装最新版本。

在您的示例中:如果您已经安装了Laravel v5或v6,则要安装的软件包的最新可能版本是v0.2.0,因为v1.0.0仅与Laravel v7兼容。同样,如果安装了Laravel v7,则安装了软件包的v1.0.0,因为先前版本v0.2.0与Laravel v7不兼容。

如果在安装Laravel v5或v6时使用composer require tkeer/mailbase:"v1.0.0",则将抛出错误消息,因为此软件包不兼容。