Jak zainstalować określoną wersję pakietu za pomocą Composer?

Odpowiedzi:

110

Dodaj podwójne cudzysłowy, aby użyć operatora karetki w numerze wersji.

composer require middlewares/whoops "^0.4"
Yoann Kergall
źródło
3
Nie widzę momentu, w którym można by podać nazwę i wersję pakietu jako dwa osobne argumenty.
x-yuri
1
@ x-yuri przekazywanie nazwy i wersji pakietu jako osobnych argumentów działa dla mnie przy użyciu kompozytora 1.5.1
bryonbean
Chociaż technicznie nie jest to „poprawna” odpowiedź na pytanie PO, jest to prawdopodobnie bardziej przydatne dla większości ludzi.
Rich Court
19

wystarczy użyć php composer.phar wymagają

Na przykład :

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

Dostępne również z instalacją.

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

Aize
źródło
Dla przypomnienia, dodawanie wiązań niestandardowych nie jest dostępne z install- tylko z require. Jeśli miałeś zamiar przejść do konkretnej wersji i zarejestrować composer.lockplik, możesz, ale będziesz musiał użyć, composer requirea następnie przywrócić zmianę do composer.jsonpóźniej.
mindplay.dk
Wersja jako osobny argument? Czy to kiedykolwiek było dostępne?
x-yuri
10

Jak wspomniano w @alucic, użyj:

composer require vendor/package:version

lub możesz użyć:

composer update vendor/package:version

Prawdopodobnie powinieneś przejrzeć ten post StackOverflow na temat różnic między instalacją kompozytora a aktualizacją kompozytora .

W związku z pytaniem o numery wersji możesz przejrzeć dokumentację Composer dotyczącą wersji , ale w skrócie:

  • Zakres wersji tyldy ( ~ ) - ~ 1.2.3 odpowiada> = 1.2.3 < 1.3.0
  • Zakres wersji Caret ( ^ ) - ^ 1.2.3 jest równoważny> = 1.2.3 < 2.0.0

Tak więc, dzięki Tilde będziesz otrzymywać automatyczne aktualizacje łat, ale mniejsze i większe wersje nie będą aktualizowane. Jednakże, jeśli użyjesz Caret , dostaniesz łatki i mniejsze wersje, ale nie dostaniesz większych (przełamujących zmiany) wersji.

Wersja Tilde jest uważana za „bezpieczniejszą”, ale jeśli używasz niezawodnych zależności (dobrze utrzymanych bibliotek), nie powinieneś mieć żadnych problemów z wersją Caret (ponieważ niewielkie zmiany nie powinny niszczyć zmian.

milan.latinovic
źródło
5

Załóżmy, że chcesz zainstalować Laravel Collective. Obecnie jest w wersji 6.x, ale chcesz wersję 5.8. Możesz uruchomić następujące polecenie:

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

Dobry przykład pokazano tutaj w dokumentacji: https://laravelcollective.com/docs/5.5/html

Jay LampStack
źródło
0

W swoim composer.jsonmożesz umieścić:

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

następnie uruchom composer installlub composer updatez katalogu zawierającego composer.json. Czasami, dla mnie kompozytor jest hinky, więc zacznę composer clear-cache; rm -rf vendor; rm composer.lockprzed composer installaby upewnić się, że coraz świeże rzeczy.


Oczywiście, jak wskazują inne odpowiedzi, z terminalu można uruchomić następujące polecenia:

composer require vendor/package:version

A w sprawie wersjonowania:
- Oficjalny artykuł kompozytora
- Ecosia Search

Trzcina
źródło