Wie installiere ich eine bestimmte Version des Pakets mit Composer?

343

Ich versuche, eine bestimmte Version eines Pakets mit Composer zu installieren. Ich habe es versucht composer installund composer requireaber sie installieren die neueste Version des Pakets. Was ist, wenn ich eine ältere Version möchte?

gdaras
quelle
Lesen Sie diese Antwort auf stackoverflow.com/questions/15212381/…
KevinOrfas

Antworten:

110

Fügen Sie doppelte Anführungszeichen hinzu, um den Caret-Operator in der Versionsnummer zu verwenden.

composer require middlewares/whoops "^0.4"
Yoann Kergall
quelle
3
Ich sehe keinen Zeitpunkt, an dem Sie den Paketnamen und die Version als zwei separate Argumente übergeben könnten .
X-Yuri
1
@ x-yuri Paket Name und Version als separate Argumente übergeben funktioniert für mich mit Composer 1.5.1
Bryonbean
Obwohl dies technisch gesehen nicht die "richtige" Antwort auf die Frage des OP ist, ist dies für die meisten Menschen wahrscheinlich nützlicher.
Rich Court
19

Verwenden Sie einfach PHP Composer.phar erforderlich

Beispielsweise :

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

Auch bei Installation erhältlich.

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

Aize
quelle
Für den Datensatz ist das Hinzufügen benutzerdefinierter Einschränkungen nicht mit install- nur mit verfügbar require. Wenn Sie gehofft haben, zu einer bestimmten Version zu wechseln und Ihre composer.lockDatei einzuchecken , können Sie dies, aber Sie composer requiremüssten die Änderung verwenden und anschließend zurücksetzen composer.json.
mindplay.dk
Version als separates Argument? War das jemals verfügbar?
X-Yuri
9

Verwenden Sie, wie @alucic erwähnt, Folgendes:

composer require vendor/package:version

oder Sie können verwenden:

composer update vendor/package:version

Sie sollten diesen StackOverflow-Beitrag wahrscheinlich über Unterschiede zwischen der Composer-Installation und dem Composer-Update lesen .

Im Zusammenhang mit Fragen zu Versionsnummern können Sie die Composer-Dokumentation zu Versionen lesen , aber hier kurz:

  • Tilde-Versionsbereich ( ~ ) - ~ 1.2.3 entspricht> = 1.2.3 < 1.3.0
  • Der Caret-Versionsbereich ( ^ ) - ^ 1.2.3 entspricht> = 1.2.3 < 2.0.0

Mit Tilde erhalten Sie automatische Updates von Patches, kleinere und größere Versionen werden jedoch nicht aktualisiert. Wenn Sie Caret verwenden, erhalten Sie Patches und Nebenversionen, jedoch keine Hauptversionen (Änderungen).

Die Tilde-Version wird als "sicherer" Ansatz angesehen. Wenn Sie jedoch zuverlässige Abhängigkeiten (gut gepflegte Bibliotheken) verwenden, sollten Sie keine Probleme mit der Caret-Version haben (da geringfügige Änderungen keine Änderungen bewirken sollten.

milan.latinovic
quelle
5

Angenommen, Sie möchten Laravel Collective installieren. Es ist derzeit in Version 6.x, aber Sie möchten Version 5.8. Sie können den folgenden Befehl ausführen:

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

Ein gutes Beispiel finden Sie hier in der Dokumentation: https://laravelcollective.com/docs/5.5/html

Jay LampStack
quelle
0

In Ihre composer.jsonkönnen Sie setzen:

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

dann ausführen composer installoder composer updateaus dem Verzeichnis mit composer.json. Manchmal ist der Komponist für mich hinky, also fange ich composer clear-cache; rm -rf vendor; rm composer.lockvorher composer installan, um sicherzugehen, dass es frische Sachen gibt.


Wie die anderen Antworten zeigen, können Sie vom Terminal aus natürlich Folgendes ausführen:

composer require vendor/package:version

Und zur Versionierung:
- Artikel über die offiziellen Versionen des Komponisten
- Ecosia Search

Schilf
quelle