Comment installer une version spécifique d'un package à l'aide de Composer?


Réponses:



110

Ajoutez des guillemets doubles pour utiliser l'opérateur caret dans le numéro de version.

composer require middlewares/whoops "^0.4"

3
Je ne vois pas un moment où vous pourriez passer le nom et la version du package comme deux arguments distincts.
x-yuri

1
@ x-yuri en passant le nom et la version du package comme arguments séparés fonctionne pour moi en utilisant le composeur 1.5.1
bryonbean

Bien que techniquement ce ne soit pas la "bonne" réponse à la question du PO, c'est probablement plus utile pour la plupart des gens.
Rich Court

19

utilisez simplement php composer.phar

Par exemple :

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

Également disponible avec l'installation.

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


Pour mémoire, l'ajout de contraintes personnalisées n'est pas disponible avec install- uniquement avec require. Si vous espériez passer à une version spécifique et archiver votre composer.lockfichier, vous le pouvez, mais vous devrez utiliser composer requirepuis rétablir la modification par la composer.jsonsuite.
mindplay.dk

La version comme argument distinct? Était-ce jamais disponible?
x-yuri

10

Comme @alucic l'a mentionné, utilisez:

composer require vendor/package:version

ou vous pouvez utiliser:

composer update vendor/package:version

Vous devriez probablement consulter cet article StackOverflow sur les différences entre l'installation et la mise à jour de Composer .

Concernant la question des numéros de version, vous pouvez consulter la documentation de Composer sur les versions , mais ici en bref:

  • Tilde Version Range ( ~ ) - ~ 1.2.3 est équivalent à> = 1.2.3 < 1.3.0
  • Plage de versions du curseur ( ^ ) - ^ 1.2.3 équivaut à> = 1.2.3 < 2.0.0

Ainsi, avec Tilde, vous obtiendrez des mises à jour automatiques des correctifs, mais les versions mineures et majeures ne seront pas mises à jour. Cependant, si vous utilisez Caret, vous obtiendrez des correctifs et des versions mineures, mais vous n'obtiendrez pas de versions majeures (changements de rupture).

La version Tilde est considérée comme une approche "plus sûre", mais si vous utilisez des dépendances fiables (bibliothèques bien entretenues), vous ne devriez pas avoir de problèmes avec la version Caret (car les modifications mineures ne devraient pas être des ruptures).


5

Supposons que vous souhaitiez installer Laravel Collective. Il est actuellement à la version 6.x mais vous voulez la version 5.8. Vous pouvez exécuter la commande suivante:

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

Un bon exemple est présenté ici dans la documentation: https://laravelcollective.com/docs/5.5/html


0

Dans votre composer.json, vous pouvez mettre:

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

puis exécutez composer installou à composer updatepartir du répertoire contenant composer.json. Parfois, pour moi, le compositeur est hinky, donc je vais commencer par composer clear-cache; rm -rf vendor; rm composer.lockavant composer installpour m'assurer qu'il y a du nouveau.


Bien sûr, comme le soulignent les autres réponses, vous pouvez exécuter ce qui suit à partir du terminal:

composer require vendor/package:version

Et sur le versioning:
- Article des versions officielles du compositeur
- Ecosia Search

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.