web-dev-qa-db-fra.com

composer.lock: comment ça marche?

J'essaie de comprendre cette partie: http://getcomposer.org/doc/02-libraries.md#lock-file

ce fichier de verrouillage n'aura aucun effet sur les autres projets qui en dépendent. Cela n'a d'effet que sur le projet principal "

Est-ce à dire que si le projet P dépend de la bibliothèque A et que la bibliothèque A dépend de la bibliothèque B v1.3, le projet P ne se souciera pas de la version de la bibliothèque B et installera éventuellement B 1.4 à la place? Quel est le point alors?

Ou cela signifie-t-il le contraire, comme on pourrait s'y attendre d'un gestionnaire de dépendance?

59
HappyDeveloper

Les dépendances du compositeur sont définies dans composer.json. Lorsque vous exécutez composer installez pour la première fois ou lorsque vous exécutez composer mettez à jour un fichier de verrouillage appelé composer.lock sera créé.

La documentation citée se réfère uniquement au fichier de verrouillage. Si votre projet P dépend de la bibliothèque A et A dépend de B v1.3. ***, alors si A contient un fichier de verrouillage indiquant que quelqu'un a exécuté la "mise à jour du compositeur" entraînant l'installation de B v1.3.2, puis installer A dans votre projet P pourrait toujours installer 1.3.3, car le composer.json (ne pas .lock!) a défini la dépendance sur 1.3. *.

Les fichiers de verrouillage contiennent toujours des numéros de version exacts et sont utiles pour communiquer la version avec laquelle vous avez testé à vos collègues ou lors de la publication d'une application. Pour les bibliothèques, les informations de dépendance dans composer.json est tout ce qui compte.

66
naderman

composer.lock enregistre les versions exactes installées. Pour que vous soyez dans les mêmes versions avec vos collègues.

installation du compositeur

  • Vérifier composer.lock fichier
  • Sinon, générez automatiquement composer.lock fichier (en utilisant composer update)
  • Installez les versions spécifiées enregistrées dans le composer.lock fichier

mise à jour du compositeur

  • Parcourir le composer.json fichier
  • Vérifier la disponibilité des versions les plus récentes (les plus récentes), en fonction des critères de version mentionnés (par exemple, 1.12. *)
  • Installer les dernières versions possibles (selon ci-dessus)
  • Mise à jour composer.lock fichier avec les versions installées

Donc, dans une simple liste de contrôle.

Si vous souhaitez conserver tous les collègues dans les mêmes versions que vous ...

  • Engagez votre composer.lock vers GIT (ou vcs que vous avez)
  • Demandez aux autres d'obtenir la version de composer.lock fichier
  • Utilisez toujours composer install pour obtenir les bonnes dépendances

Si vous souhaitez mettre à niveau les dépendances système vers de nouvelles versions

  • Vérifiez le fichier composer.json pour les spécifications de version.
  • Fait une composer update
  • Cela va changer le composer.lock fichier avec les dernières versions
  • Validez-le sur le GIT (ou vcs)
  • Demandez aux autres de l'obtenir et composer install

Ce sera une très bonne lecture
https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file

Profitez de la puissance de composer.lock fichier!

42
Dilhan Maduranga

Le but du fichier de verrouillage est d'enregistrer les versions exactes qui sont installées afin qu'elles puissent être réinstallées. Cela signifie que si vous disposez d'une version de spécification de 1. * et que votre collègue exécute composer update qui installe 1.2.4, puis valide le fichier composer.lock, lorsque vous composer install, vous obtiendrez également la version 1.2.4, même si la version 1.3.0 a été publiée. Cela garantit que tous ceux qui travaillent sur le projet ont la même version exacte.En savoir plus ici Compositeur: tout est sur le fichier de verrouillage

3