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"
Yoann Kergall
la source
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

Aize
la source
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).

milan.latinovic
la source
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

Jay LampStack
la source
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

Roseau
la source