2017-09-04 1 views
2

Je suis en train de lire/apprendre sur Composer, le gestionnaire de paquets au niveau de l'application pour PHP.Les paquets PHP installés par Composer - devraient-ils être dans le contrôle de la source?

Dans cette blog post écrite par le plomb dev Jordi Boggiano, il écrit:

Composer sur les autres forces de la main vous de déclarer votre projet dépendances dans un endroit unique (composer.json à la racine) . Vous juste vérifier le code, installer les dépendances, et ils seront assis dans le répertoire du projet , ne dérange pas toute autre chose sur la machine. Une autre fonctionnalité connexe est le fichier composer.lock qui est généré lorsque vous installez ou mettez à jour des dépendances. Il stocke la version exacte de chaque dépendance qui a été utilisée. Si vous vous engagez il, quelqu'un vérifier le projet sera en mesure d'installer exactement les mêmes versions que vous avez fait lorsque vous dernière mise à jour ce fichier, ce qui évite les problèmes en raison de incompatibilités mineures ou régressions dans différentes versions d'une dépendance .

Si je comprends Composer bien, quand nous parlons de paquets téléchargés/installés par le compositeur, nous parlons de paquets de code PHP, à savoir code de programmation écrit en PHP, et non des paquets au niveau du système, par exemple, les extensions de l'environnement d'exécution PHP installé sur le serveur. Donc, une fois que ces paquets de code PHP ont été téléchargés et ajoutés à un projet PHP, j'aurais pensé que ces paquets deviendraient partie intégrante du code source de l'application PHP, par exemple pour être vérifiés sur n'importe quel système de contrôle de version. Si un autre développeur arrive et vérifie le code, pourquoi auraient-ils besoin de "installer les paquets", comme indiqué dans l'article du blog? N'obtiendraient-ils pas une copie de tous les paquets de code quand ils vérifient le code du contrôle de source? Cette ligne dans le billet de blog me trouble et me fait penser que je ne comprends pas Composer.

Toute précision sur ce point serait grandement appréciée. Merci.

+0

Voir https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md. – localheinz

Répondre

3

Les dépendances elles-mêmes doivent et non être validées au contrôle de source. Les fichiers composer.json et composer.lock, d'autre part, devraient. Il y a diverses raisons à cela, parmi elles:

  • Chaque fois que vous mettez à jour la dépendance, vous devez valider les modifications. Ce type de coupler étroitement votre code à la dépendance, quand il devrait être exactement l'inverse.
  • Les packages eux-mêmes sont déjà dans leur propre référentiel avec leur propre historique. Pourquoi répéter cela dans l'histoire de votre projet?
  • Ces dépôts peuvent être énormes, juste embrouiller les eaux autour de votre projet. Pourquoi transporter tout ce poids?

Au lieu de cela, chaque développeur ayant composer install il suffit d'exécuter (très important: non composer update) chaque fois qu'ils vérifient le projet est beaucoup plus efficace. Composer va installer les dépendances à partir de composer.lock, en s'assurant que tout le monde qui exécute le même commit est exactement sur la même page. La même chose vaut pour le déploiement.

Vous pouvez en savoir plus sur ce here.

D'autre part, il pourrait y avoir des situations où vous avez pour valider vos paquets pour contourner un problème, comme par exemple lorsque vous savez que vous ne serez pas en mesure d'exécuter composer install sur votre serveur de production (partagé d'hébergement

+0

Heureux de vous aider! Est-ce un peu plus clair maintenant? – ishegg

+0

Oui, c'est, merci. – Callum

4

Normalement, les paquets installés via composer ne sont pas enregistrés dans le contrôle source, seulement le code que vous écrivez et les fichiers composer.json et composer.lock.

De cette façon, le référentiel de votre projet ne sera pas gonflé avec du code que vous n'avez pas écrit et qui ne vous intéresse pas vraiment.

Oui, c'est normal après le clonage de votre dépôt, un développeur devra exécuter la commande "composer install". Le fichier composer.lock s'assurera qu'ils reçoivent les mêmes modules et les mêmes versions que vous avez utilisés lors de la création de votre projet. Non compris les modules compositeurs dans votre contrôle de source vous permettent également de mettre à jour facilement aux modules pour obtenir des corrections de bugs et de nouvelles fonctionnalités dans les nouvelles versions d'entre eux.