Как установить конкретную версию пакета с помощью Composer?


347

Я пытаюсь установить конкретную версию пакета с помощью Composer. Я попробовал composer installи , composer requireно они установить последнюю версию пакета. Что если я захочу старую версию?


прочитайте этот ответ stackoverflow.com/questions/15212381/…
KevinOrfas

Ответы:


604

composer require vendor/package:version

например:

composer require refinery29/test-util:0.10.2


6
что такое функция ^ и ~ в номере версии?
Деди Ананто

2
Вы можете найти ответ здесь stackoverflow.com/a/22345808/1522019
alucic

1
@DediAnanto, пожалуйста, посмотрите на эту ссылку из пакетов npm аналогичного взаимодействия. stackoverflow.com/questions/22343224/...
okandas

110

Добавьте двойные кавычки, чтобы использовать оператор вставки в номере версии.

composer require middlewares/whoops "^0.4"

3
Я не вижу момента, когда вы могли бы передать имя пакета и версию как два отдельных аргумента.
x-yuri


Хотя технически это не «правильный» ответ на вопрос ОП, это, вероятно, более полезно для большинства людей.
Богатый суд

19

просто используйте php composer.phar require

Например :

php composer.phar require doctrine/mongodb-odm-bundle 3.0

Также доступно с установкой.

https://getcomposer.org/doc/03-cli.md#require https://getcomposer.org/doc/03-cli.md#install


Для записи, добавляя собственные ограничения не доступны install- только require. Если вы надеялись переключиться на конкретную версию и зарегистрировать свой composer.lockфайл, вы можете, но вам придется использовать composer requireи затем отменить изменение на composer.jsonпотом.
mindplay.dk

Версия как отдельный аргумент? Это было когда-либо доступно?
x-yuri

10

Как уже упоминалось @alucic, используйте:

composer require vendor/package:version

или вы можете использовать:

composer update vendor/package:version

Вероятно, вам следует просмотреть этот пост StackOverflow о различиях между установкой композитора и обновлением композитора .

Относительно вопроса о номерах версий вы можете просмотреть документацию Composer по версиям , но здесь вкратце:

  • Диапазон версий тильды ( ~ ) - ~ 1.2.3 эквивалентен> = 1.2.3 < 1.3.0
  • Диапазон версий каретки ( ^ ) - ^ 1.2.3 эквивалентен> = 1.2.3 < 2.0.0

Таким образом, с Tilde вы будете получать автоматические обновления патчей, но второстепенные и основные версии обновляться не будут. Однако, если вы используете Caret, вы получите исправления и второстепенные версии, но вы не получите основные версии (с критическими изменениями).

Версия Tilde считается «более безопасным», но если вы используете надежные зависимости (хорошо поддерживаемые библиотеки), у вас не должно быть проблем с версией Caret (поскольку незначительные изменения не должны нарушать изменения.


5

Предположим, вы хотите установить Laravel Collective. Это в настоящее время в версии 6.x, но вы хотите версию 5.8. Вы можете запустить следующую команду:

composer require "laravelcollective/html":"^5.8.0"

Хороший пример показан здесь в документации: https://laravelcollective.com/docs/5.5/html


0

В свой composer.json, вы можете положить:

{
    "require": {
        "vendor/package": "version"
    }
}

затем запустить composer installили composer updateиз каталога, содержащего composer.json. Иногда, для меня, композитор недоверчив, поэтому я начну с composer clear-cache; rm -rf vendor; rm composer.lockтого, composer installчтобы убедиться, что он получает свежие вещи.


Конечно, как показывают другие ответы, вы можете запустить следующее из терминала:

composer require vendor/package:version

И о версии:
- Официальная версия Composer статьи
- Ecosia Search

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.