web-dev-qa-db-fra.com

Comment mettre à jour une seule bibliothèque avec Composer?

Je n'ai besoin d'installer qu'un seul paquet pour ma distribution SF2 (DoctrineFixtures).

Quand je cours 

php composer.phar update

Je reçois

  - Updating twig/twig (dev-master 39d94fa => v1.13.0)
    The package has modified files:
    M CHANGELOG
    M doc/filters/batch.test
    M doc/filters/index.rst
    M doc/filters/url_encode.rst
    M doc/functions/index.rst
    M doc/tags/index.rst
    M doc/tests/index.rst
    M lib/Twig/Autoloader.php
    M lib/Twig/Compiler.php
    M lib/Twig/CompilerInterface.php
-10 more files modified, choose "v" to view the full list

Il semble que le dernier développeur ait édité beaucoup de fichiers chez le fournisseur.

Afin de contourner cela, j'ai essayé 

php composer.phar update <package_name>

Mais cela ne semble pas fonctionner. Comment puis-je mettre à jour/installer une seule bibliothèque de composer.json?

220
Tool

Pour installer doctrine/doctrine-fixtures-bundle avec la version 2.1.* et la stabilité minimale @dev, utilisez ceci:

composer.phar require doctrine/doctrine-fixtures-bundle:2.1.*@dev

puis pour ne mettre à jour que ce seul paquet:

composer.phar update doctrine/doctrine-fixtures-bundle
391
nifr

Si vous voulez juste mettre à jour quelques paquets et pas tous, vous pouvez les lister comme suit:

php composer.phar update vendor/package:2.* vendor/package2:dev-master

Vous pouvez également utiliser des caractères génériques pour mettre à jour plusieurs paquets à la fois:

php composer.phar update vendor/*
  • --prefer-source: installe les paquetages à partir de source lorsqu'ils sont disponibles.
  • --prefer-dist: installe les paquetages à partir de dist lorsqu'ils sont disponibles.
  • --ignore-platform-reqs: ignore les exigences php, hhvm, lib-* et ext-* et force l'installation même si la machine locale ne les remplit pas. Voir aussi la platformoption de configuration }.
  • --dry-run: Simule la commande sans rien faire.
  • --dev: Installe les packages répertoriés dans require-dev (il s'agit du comportement par défaut).
  • --no-dev: ignore les packages d'installation répertoriés dans require-dev. La génération de l'autoloader ignore les règles autoload-dev.
  • --no-autoloader: ignore la génération de l'autoloader.
  • --no-scripts: ignore l'exécution des scripts définis dans composer.json.
  • --no-plugins: désactive les plugins.
  • --no-progress: Supprime l'affichage de progression qui peut perturber certains terminaux ou scripts qui ne gèrent pas les caractères de retour arrière.
  • --optimize-autoloader (-o): convertissez le chargement automatique du PSR-0/4 en classmap pour obtenir un autoloader plus rapide. Ceci est recommandé en particulier pour la production, mais l’exécution peut prendre un peu de temps, ce qui n’est actuellement pas le cas par défaut.
  • --lock: met à jour uniquement le hachage du fichier de verrouillage pour supprimer l'avertissement indiquant que le fichier de verrouillage est obsolète.
  • --with-dependencies: ajoute également toutes les dépendances des packages sur liste blanche à la liste blanche.
  • --prefer-stable: Préfère les versions stables des dépendances.
  • --prefer-lower: Préfère les versions les plus basses des dépendances. Utile pour tester des versions minimales d'exigences, généralement utilisé avec --prefer-stable.
145
Yosvel Quintero

En gros, vous pouvez en faire de même pour installer un nouveau paquet.

php composer.phar require

terminal vous demandera alors d’entrer le nom du paquet à rechercher.

$ Search for a package []: //Your package name here

Ensuite, le terminal vous demandera la version du paquet (si vous voulez avoir la dernière version, laissez la vierge)

$ Enter the version constraint to require (or leave blank to use the latest version) []: //your version number here

Ensuite, vous appuyez simplement sur la touche de retour. Terminal vous demandera un autre paquet. Si vous ne voulez pas en installer un autre, appuyez simplement sur la touche Retour et vous aurez terminé.

8
orhankutlu

Pour vous assurer que composer met à jour un package déjà installé avec la dernière version, dans le respect des contraintes de version définies dans composer.json, supprimez le package du fournisseur, puis exécutez:

php composer.phar update vendor/package
3
Tsounabe

Supposons que vous avez dans composer.json "parsecsv/php-parsecsv": "0.*", et dans votre fichier composer.lock 

  "name": "parsecsv/php-parsecsv",
            "version": "0.1.4",

La dernière version de 0.* est 0.3.2 et la dernière version est 1.1.0.

C'est ce qui se passe avec les commandes suivantes:

composer install parsecsv/php-parsecsv

Ceci installera la version 0.1.4 comme spécifié dans le fichier de verrouillage

composer update parsecsv/php-parsecsv

Cela mettra à jour le paquet à 0.3.2. La version la plus élevée en ce qui concerne votre composer.json. L'entrée dans composer.lock sera mise à jour.

composer require parsecsv/php-parsecsv

Ceci mettra à jour ou installera la dernière version 1.1.0. Votre fichier composer.lock et votre fichier composer.json seront également mis à jour.

0
Adam

Juste utiliser 

composer require {package/packagename}

comme

composer require phpmailer/phpmailer

si le package ne se trouve pas dans le dossier du fournisseur, composeur l'installer et si le package existe, mettez à jour le package de composeur vers la dernière version.

0
Mostafa

Parce que vous vouliez installer un package spécifique "Je n'ai besoin d'installer qu'un package pour ma distribution SF2 (DoctrineFixtures)."

php composer.phar require package/package-name:package-version.__ serait suffisant

0
The Anh