Optimisation des performances, nouvelles fonctionnalités et guide de mise à niveau apportés par la version Composer 2.0
Composer a publié la version 2.0 hier lors de la Journée des programmeurs. Cette version fait 8 ans depuis la sortie de la version bêta de Composer 1.0. En tant qu'outil de gestion de packages PHP, Composer a donné à tout le monde L'éléphant (le logo de PHP est un éléphant). ailes, apportant une nouvelle expérience d'installation et de gestion des packages d'extension (ou packages de dépendances) au développement de projets PHP, réduisant leurs coûts de maintenance tout en enrichissant considérablement l'écosystème PHP.
Cette nouvelle version apporte de nombreuses nouvelles fonctionnalités, et plus important encore, les performances ont également été grandement améliorées. Si vous êtes intéressé, vous pouvez consulter les détails détaillés de la mise à niveau dans le référentiel Composer GitHub. Ici, je vais vous donner une brève introduction à la comparaison des performances des nouvelles et anciennes versions dans les projets PHP populaires, les principales nouvelles fonctionnalités et comment mettre à niveau vers. Compositeur 2.0.
Optimisation des performances
La nouvelle version révise presque tout le code, du protocole utilisé entre Composer et packagist.org aux refactorisations de résolution des dépendances, y compris l'utilisation de curl pour télécharger des fichiers en parallèle et l'optimisation de l'évaluation des contraintes (c'est-à-dire le contrôle de version des packages d'extension), etc. Ces refactorisations ont grandement amélioré Composer 2.0 en termes de vitesse et d'utilisation de la mémoire.
Cependant, les performances réelles de ces améliorations dépendent des scénarios d'utilisation spécifiques. Bien que des rapports officiels faisant état d'une amélioration des performances de 50 % aient été obtenus dans certains projets, ils ne peuvent pas être utilisés comme base pour donner des chiffres exacts qui s'appliquent à ceux-ci. tous les scénarios. Mais une chose est sûre, si vous n’avez pas encore utilisé Composer 2.0, vous serez surpris par votre expérience avec la nouvelle version.
De plus, les mises à jour requises/supprimées et partielles sont beaucoup plus rapides qu'auparavant, car Composer ne chargera désormais que les métadonnées des packs d'extension modifiés.
Ce qui suit est une comparaison de l'optimisation de la vitesse de Composer 1 et Composer 2 dans les projets PHP populaires actuels :
Comme vous pouvez le voir, pour les projets Laravel , les performances améliorées d'environ quatre fois. J'ai personnellement expérimenté l'utilisation des anciennes et des nouvelles versions pour initialiser un projet Laravel, et il y a en effet une amélioration significative de la vitesse visible à l'œil nu.
Aperçu des principales nouveautés
Donnons un bref aperçu de quelques mises à jour importantes de Composer 2.0 :
Ajustements de l'architecture
La façon dont les mises à jour des dépendances sont exécutées en interne a été restructurée. Pour vous, vous pouvez désormais voir des mises à jour plus déterministes. Une fois les mises à jour terminées, le processus d'installation s'exécutera automatiquement simultanément. évitant ainsi d'avoir à Le processus a été interrompu à mi-chemin de l'installation en raison de problèmes de réseau.
Nouvelles fonctionnalités d'exécution
vendor/autoload.php a ajouté une nouvelle étape de détection de plate-forme lors de l'initialisation, vérifiant principalement si la version actuelle de PHP et la version du pack d'extension correspondent, si non, si c'est le cas, l'initialisation échouera.
Dans le projet Composer 2.0, vous pouvez voir une nouvelle classe InstalledVersions dans le répertoire supplier/composer. Elle sera automatiquement chargée dans chaque projet et est valide au moment de l'exécution. Vous pouvez l'utiliser pour vérifier les packages d'extension d'exécution. valides dans le projet et leurs numéros de version.
Si votre code dépend de ces nouvelles fonctionnalités d'exécution, vous pouvez ajouter l'instruction de dépendance "composer-runtime-api": "^2.0" dans l'élément de configuration require de composer.json.
Optimisation des rapports d'erreurs
Composer 2.0 optimise l'affichage des rapports d'erreurs lorsque les dépendances ne peuvent pas être résolues. Les messages d'erreur seront désormais plus courts, plus clairs et moins répétitifs.
Mise à jour partielle avec contraintes temporaires
Vous pouvez désormais exécuter composer update supplier/package:1.0.* pour mettre à niveau la version du package d'extension spécifié (tel que supplier/ package ici), il ne mettra pas à jour composer.json, ni le fichier composer.lock. Si vous souhaitez ajouter cette contrainte temporaire et mettre à jour toutes les dépendances en même temps, vous devez utiliser la mise à jour composer --with supplier. Commande /package:1.0.*.
Mise à niveau vers Composer 2.0
La mise à niveau vers Composer 2.0 est très simple, exécutez simplement la commande suivante :
composer self-update --2
Il convient de noter qu'après la mise à niveau, certains plug-ins de la version Composer 1.0 peuvent ne pas encore prendre en charge Composer 2.0, et le nouveau mécanisme de détection de plate-forme détectera si la version d'exécution PHP et la version du pack d'extension correspondent Ce sont tous Cela peut causer des problèmes avec la résolution des dépendances du package d'extension auparavant normale. Vous pouvez utiliser la commande composer self-update --rollback ou composer self-update --1 pour revenir à l'ancienne version précédente de Composer, ou lire. le guide de mise à niveau de Composer pour en savoir plus.