composer всегда устанавливает последнюю версию пакета - PullRequest
0 голосов
/ 26 апреля 2020

Я сделал два новых релиза v1.0.0 и v0.2.0 моего пакета mailbase .

v1.0.0 имеет ограничение пакета ^ 7.0

"laravel/framework": "^7.0"

v0.2.0 имеет ограничение пакета

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

Но при установке этого пакета

composer require tkeer/mailbase

composer всегда устанавливайте v1.0.0 независимо от версии laravel (laravel5, laravel6 или laravel7). Разве он не должен установить v0.2.0 для laravel6 и laravel5?

Ответы [ 3 ]

1 голос
/ 26 апреля 2020

composer всегда выбирайте последнюю версию для установки

вот синтаксис для установки пакетов через composer

composer require vendor/package:version

укажите версию для установки

composer require tkeer/mailbase:0.2.0
0 голосов
/ 26 апреля 2020

При запуске 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.

Если вы используете composer require tkeer/mailbase:"v1.0.0", тогда как Laravel v5 или v6 установлены, будет выдано сообщение об ошибке, так как этот пакет несовместим.

0 голосов
/ 26 апреля 2020

На самом деле ваш composer. json плагина говорит, что

V1.0.0 может работать только на Laravel 7.0 и выше

v0.2.0 может работать на всех Laravel с 5.0 до 6.0 v0.2.0 может работать на всех Laravel с 6.0 до 7.0

Добавление ^ 6.0 make доступно с версии 6.0 до 7.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
}
...