git - update - what is the use of composer lock




Est-ce que composer.lock doit être engagé dans le contrôle de version? (4)

Je suis un peu confus avec composer.lock utilisé dans une application avec un référentiel.

J'ai vu beaucoup de gens dire que nous ne devrions pas .gitignore composer.lock du dépôt.

Si je mets à jour mes bibliothèques dans mon environnement de développement, j'aurai un nouveau composer.lock mais je ne serai pas capable de les mettre à jour en production, n'est-ce pas?

Ne va-t-il pas générer des conflits sur ce fichier?


Vous engagez ensuite le fichier composer.json dans votre projet et tous les membres de votre équipe peuvent exécuter l'installation de composer pour installer vos dépendances de projet.

Le point du fichier de verrouillage est d'enregistrer les versions exactes installées afin qu'elles puissent être réinstallées. Cela signifie que si vous avez une spécification de version de 1. * et que votre collègue exécute la mise à jour de composer qui installe 1.2.4, puis valide le fichier composer.lock, lorsque vous l'installez, vous obtiendrez également 1.2.4, même si 1.3.0 a été publié. Cela garantit que tout le monde travaillant sur le projet a la même version exacte.

Cela signifie que si quelque chose a été commis depuis la dernière installation d'un composeur, alors, sans fichier de verrouillage, vous obtiendrez un nouveau code tiers .

Encore une fois, c'est un problème si vous êtes préoccupé par votre code de rupture. Et c'est une des raisons pour lesquelles il est important de considérer Composer comme étant centré autour du fichier composer.lock.

Source: blog.engineyard.com/2014/composer-its-all-about-the-lock-file .

Validez le fichier composer.lock de votre application (avec composer.json) en contrôle de version. Ceci est important car la commande d'installation vérifie si un fichier de verrouillage est présent, et si c'est le cas, il télécharge les versions spécifiées ici (indépendamment de ce que dit composer.json). Cela signifie que toute personne qui configure le projet téléchargera exactement la même version des dépendances. Votre serveur CI, vos machines de production, les autres développeurs de votre équipe, tout le monde et tout le monde utilisent les mêmes dépendances, ce qui réduit le risque que des bogues affectent seulement certaines parties des déploiements. Même si vous développez seul, dans six mois lors de la réinstallation du projet, vous pouvez être sûr que les dépendances installées fonctionnent encore, même si vos dépendances ont publié de nombreuses nouvelles versions depuis.

Source: Compositeur - Utilisation de base .


  1. Vous ne devriez pas mettre à jour vos dépendances directement sur Production.
  2. Vous devriez contrôler la version de votre fichier composer.lock .
  3. Vous ne devriez pas contrôler la version de vos dépendances réelles.

1. Vous ne devriez pas mettre à jour vos dépendances directement sur Production , car vous ne savez pas comment cela affectera la stabilité de votre code. Il pourrait y avoir des bogues introduits avec les nouvelles dépendances, cela pourrait changer la façon dont le code agit sur le vôtre, il pourrait être incompatible avec d'autres dépendances, etc. Vous devriez le faire dans un environnement de développement, suivi par des tests de QA et de régression appropriés, etc. .

2. Vous devez contrôler votre fichier composer.lock , car il stocke des informations sur vos dépendances et sur les dépendances de vos dépendances qui vous permettront de répliquer l'état actuel du code. Ceci est important, car tous vos tests et développements ont été réalisés avec un code spécifique. Ne pas se soucier de la version actuelle du code que vous avez est similaire à télécharger des modifications de code à votre application et ne pas les tester. Si vous mettez à niveau vos versions de dépendances, cela devrait être un acte volontaire, et vous devez prendre les précautions nécessaires pour vous assurer que tout fonctionne toujours. Perdre une ou deux heures de temps à revenir à une version précédente peut vous coûter beaucoup d'argent.

Un des arguments que vous verrez pour ne pas avoir besoin de composer.lock est que vous pouvez définir la version exacte dont vous avez besoin dans votre fichier composer.json , et que de cette façon, chaque fois que quelqu'un lance l' composer install , il va les installer le même code. Ce n'est pas vrai, car vos dépendances ont leurs propres dépendances, et leur configuration peut être spécifiée dans un format permettant de mettre à jour des sous-versions, voire des versions entières.

Cela signifie que même lorsque vous spécifiez que vous voulez Laravel 4.1.31 dans votre composer.json , Laravel dans son fichier composer.json peut avoir ses propres dépendances requises en tant que Symfony event-dispatcher: 2. *. Avec ce genre de configuration, vous pourriez vous retrouver avec Laravel 4.1.31 avec Symfony Event-Dispatcher 2.4.1, et quelqu'un d'autre dans votre équipe pourrait avoir Laravel 4.1.31 avec Event-Dispatcher 2.6.5, tout dépendra de quand était la dernière fois que vous avez exécuté l'installation du composeur.

Ainsi, avoir votre fichier composer.lock dans le système de version va stocker la version exacte de ces sous-dépendances, donc, quand vous et votre coéquipier font une installation de compositeur (c'est ainsi que vous installerez vos dépendances basées sur un composeur. lock ) vous aurez les deux versions.

Et si vous voulez mettre à jour? Ensuite, dans votre environnement de développement, exécutez: composer update , cela va générer un nouveau fichier composer.lock (s'il y a quelque chose de nouveau) et après l'avoir testé, et le test QA et la régression le testent. Vous pouvez le pousser pour tout le monde à télécharger le nouveau composer.lock , car il est sûr de mettre à jour.

3. Vous ne devriez pas contrôler la version de vos dépendances réelles , car cela n'a aucun sens. Avec le composant composer.lock, vous pouvez installer la version exacte des dépendances et vous n'avez pas besoin de les valider. Pourquoi ajouteriez-vous à vos fichiers de dépendances repo 10000, lorsque vous n'êtes pas censé les mettre à jour. Si vous avez besoin de changer un de ceci, vous devriez le fourchonner et apporter vos changements là. Et si vous craignez d'avoir à récupérer les dépendances à chaque fois que vous construisez ou libérez, le compositeur a différentes façons de résoudre ce problème, le cache, les fichiers zip, etc.


Si vous craignez que votre code ne soit brisé, vous devez valider le fichier composer.lock sur votre système de contrôle de version pour vous assurer que tous les collaborateurs de votre projet utilisent la même version du code. Sans fichier de verrouillage, vous obtiendrez à chaque fois un nouveau code tiers.

L'exception est lorsque vous utilisez une méta-application, les bibliothèques où les dépendances doivent être mises à jour lors de l'installation (comme l'application Zend Framework 2 Skeleton ). Donc, le but est de saisir les dernières dépendances chaque fois que vous voulez commencer à développer.

Source: blog.engineyard.com/2014/composer-its-all-about-the-lock-file

Voir aussi: Quelles sont les différences entre la mise à jour du composeur et l'installation du composeur?


Si vous mettez à jour vos bibliothèques, vous voulez également valider le fichier de verrouillage. Il indique essentiellement que votre projet est verrouillé à ces versions spécifiques des bibliothèques que vous utilisez.

Si vous validez vos modifications et que quelqu'un tire votre code et met à jour les dépendances, le fichier de verrouillage ne doit pas être modifié. Si elle est modifiée, cela signifie que vous avez une nouvelle version de quelque chose.

L'avoir dans le référentiel vous assure que chaque développeur utilise les mêmes versions.





composer-php