Fermer

mai 10, 2022

Fils vs npm : tout ce que vous devez savoir

Fils vs npm : tout ce que vous devez savoir


Dans ce didacticiel, nous comparerons Yarn à npm, les deux gestionnaires de packages les plus populaires. Nous les mettrons côte à côte et explorerons leurs avantages et inconvénients respectifs pour vous aider à choisir celui à utiliser pour vos projets.

Établir les bases

Au bon vieux temps, un simple éditeur de texte suffisait aux développeurs pour créer et gérer la grande partie de leurs projets. Mais depuis, le Web a radicalement changé. De nos jours, il est courant que même un projet assez simple ait des centaines ou des milliers de scripts, avec des dépendances imbriquées complexes, qui sont tout simplement impossibles à gérer sans une sorte d’outil automatisé. Et c’est là que les gestionnaires de paquets entrent en jeu.

UN directeur chargé d’emballage est un outil qui gère automatiquement les dépendances d’un projet de différentes manières. Par exemple, avec l’aide d’un gestionnaire de packages, nous pouvons installer, désinstaller, mettre à jour et mettre à niveau des packages, configurer les paramètres du projet, exécuter des scripts, etc. Tout le travail dur et fastidieux est effectué par le gestionnaire de paquets, ne nous laissant que la partie amusante – le codage lui-même.

npm signifie Node Package Manager. Il a été publié en 2010, marquant le début d’une nouvelle ère dans le développement Web. Jusqu’alors, les dépendances du projet étaient téléchargées et gérées manuellement. npm était la baguette magique qui a propulsé le Web au niveau supérieur.

npm implique en fait trois choses :

  • un site Internet pour gérer divers aspects de votre expérience npm
  • un enregistrement pour accéder à une vaste base de données publique de packages JavaScript
  • un interface de ligne de commande (CLI) pour interagir avec npm via le terminal

Cependant, lorsque la plupart des gens parlent de npm, ils parlent généralement du dernier – l’outil CLI. Il est livré en tant que gestionnaire de packages par défaut avec chaque nouvelle installation de Node. Cela signifie que vous pouvez commencer à l’utiliser immédiatement.

Si vous souhaitez approfondir votre travail avec npm, veuillez consulter notre Guide du gestionnaire de packages de nœuds.

Fil signifie encore un autre négociateur de ressources. Le gestionnaire de packages Yarn est une alternative à npm, publié par Facebook en octobre 2016. L’objectif initial de Yarn était de traiter les inconvénients de npm, tels que les problèmes de performances et de sécurité. Yarn s’est rapidement positionné comme un outil de gestion des dépendances JavaScript sûr, rapide et fiable.

Mais l’équipe npm a retenu la leçon et a rapidement comblé les lacunes de npm en implémentant les fonctionnalités manquantes.

Voyageons rapidement dans le temps pour avoir une vue d’ensemble :

  • 2010 : npm est publié avec la prise en charge de Node.
  • 2016 : Le fil est sorti. Il affiche des performances bien supérieures à celles de npm. Il génère également une yarn.lock fichier qui rend le partage et la réplication exacte des dépôts beaucoup plus faciles et prévisibles.
  • 2017 : npm 5 est publié. Il offre la génération automatique d’un package-lock.json dossier en réponse à yarn.lock.
  • 2018 : npm 6 est publié avec une sécurité améliorée. Désormais, npm vérifie les vulnérabilités de sécurité avant l’installation des dépendances.
  • 2020 : Yarn 2 et npm 7 sont sortis. Les deux packages sont livrés avec de nouvelles fonctionnalités intéressantes, comme nous le verrons plus loin dans ce didacticiel.
  • 2021 : Yarn 3 est publié avec diverses améliorations.

De nos jours, les deux gestionnaires de packages sont au coude à coude dans la course à la gestion de packages, offrant des fonctionnalités et des capacités similaires. Mais il existe encore plusieurs différences qui aident à déterminer lequel nous choisissons d’utiliser.

Dans la suite de ce didacticiel, nous explorerons les principales similitudes et différences entre npm et Yarn.

Yarn vs npm : une comparaison d’installation

Nous allons commencer notre exploration comparative avec le processus d’installation pour npm et Yarn.

Installer les gestionnaires de packages eux-mêmes

Comme je l’ai noté ci-dessus, npm est préinstallé avec Node, il n’est donc pas nécessaire d’installer npm manuellement.

En revanche, Yarn doit être installé explicitement. Tout d’abord, nous devons installer Yarn globalement :

npm install -g yarn

Ensuite, nous pouvons l’utiliser projet par projet en définissant la version souhaitée dans notre projet. Nous le faisons en exécutant le yarn set version commande dans le répertoire racine du projet :

yarn set version berry

Dans ce cas, berry est la version que nous voulons définir.

Si nous voulons mettre à jour vers la dernière version, nous exécutons ceci :

yarn set version latest

Avec Yarn, nous pouvons utiliser une version différente pour chaque projet.

Pour faire la même chose avec npm, vous aurez besoin d’avoir nvm (Gestionnaire de versions de nœud) installée. Voici comment installer plusieurs versions de Node en utilisant nvm.

Installation des dépendances du projet

Voyons maintenant comment les dépendances du projet sont installées.

Quand on court npm install, les dépendances sont installées séquentiellement, l’une après l’autre. Les journaux de sortie dans le terminal sont informatifs mais un peu difficiles à lire.

Pour installer les packages avec Yarn, nous exécutons le yarn commande. Yarn installe les packages en parallèle, ce qui est l’une des raisons pour lesquelles il est plus rapide que npm. Si vous utilisez le fil 1, vous verrez que les journaux de sortie du fil sont propres, visuellement distinctifs et brefs. Ils sont également classés sous forme d’arbre pour une compréhension facile. Mais cela a changé dans les versions 2 et 3, où les journaux ne sont pas si intuitifs et lisibles par l’homme.

Jusqu’à présent, nous avons vu que npm et Yarn ont des commandes différentes pour installer des packages. Dans la section suivante, nous explorerons plus de commandes.

Comparaison des commandes npm et Yarn

npm et Yarn partagent de nombreuses commandes, mais il existe également de nombreuses commandes non identiques. Explorons d’abord certaines des commandes identiques :

  • npm init | yarn init: créer un nouveau paquet
  • npm run | yarn run: lance un script défini dans le package.json
  • npm test | yarn test: tester un paquet
  • npm publish | yarn publish: publier un package
  • npm cache clean | yarn cache clean: supprimer toutes les données du dossier cache

Ces commandes facilitent la commutation entre deux gestionnaires, mais certaines commandes non identiques peuvent prêter à confusion. Voyons ce qu’ils sont dans la liste suivante :

  • npm install | yarn: installer les dépendances
  • npm install [package] | yarn add [package]: installer un paquet
  • npm install --save-dev [package] | yarn add - -dev [package]: installer un package en tant que dépendance de développement
  • npm uninstall [package] | yarn remove [package]: désinstaller un paquet
  • npm uninstall --save-dev [package] | yarn remove [package]: désinstaller un package de dépendance de développement
  • npm update | yarn upgrade: mettre à jour les dépendances
  • npm update [package] | yarn upgrade [package]: mettre à jour un paquet

Yarn a également des commandes uniques qui n’ont pas d’équivalents npm. Par exemple, le why La commande affiche la raison pour laquelle un package est nécessaire : il peut s’agir d’une dépendance, d’un module natif ou d’une dépendance de projet.

Fil vs npm : vitesse et performances

Chaque fois que Yarn ou npm ont besoin d’installer un package, ils effectuent une série de tâches. Dans npm, ces tâches sont exécutées par package et de manière séquentielle, ce qui signifie qu’il attendra qu’un package soit complètement installé avant de passer au suivant. En revanche, Yarn exécute ces tâches en parallèle, ce qui augmente les performances.

Alors que les deux gestionnaires proposent des mécanismes de mise en cache, Yarn semble le faire un peu mieux. En implémentant un paradigme sans installation, comme nous le verrons dans la section de comparaison des fonctionnalités, il est capable d’installer des packages presque en un rien de temps. Il met en cache chaque package et l’enregistre sur le disque, de sorte que lors de la prochaine installation de ce package, vous n’aurez même pas besoin d’avoir une connexion Internet, car le package est installé hors ligne à partir du disque.

Même si Yarn présente certains avantages, les vitesses de Yarn et de npm, dans leurs dernières versions, sont assez comparables. Nous ne pouvons donc pas définir un gagnant propre ici.

Yarn vs npm : une comparaison de sécurité

L’une des principales critiques de npm concerne la sécurité. Les versions précédentes de npm ont quelques failles de sécurité graves.

Depuis la version 6, npm audite les packages lors de l’installation et vous indique si des vulnérabilités sont détectées. Nous pouvons effectuer cette vérification manuellement en exécutant npm audit contre les packages installés. Si des vulnérabilités sont trouvées, npm nous donnera des recommandations de sécurité.

npm audit rapportant des paquets non sécurisés

Comme vous pouvez le voir dans la capture d’écran ci-dessus, nous pouvons exécuter npm audit fix pour corriger les vulnérabilités des packages, et les arbres de dépendance seront corrigés s’il est possible de le faire.

Utilisation du fil et du npm algorithmes de hachage cryptographique pour assurer l’intégrité des colis.

Yarn vs npm : une comparaison des fonctionnalités

Tout comme pour les commandes, certaines fonctionnalités sont partagées par npm et Yarn, bien qu’il existe également quelques différences. Explorons d’abord les fonctionnalités communes que ces deux gestionnaires de packages partagent.

Génération d’un fichier de verrouillage

Dans package.json, le fichier dans lequel npm et Yarn gardent une trace des dépendances du projet, les numéros de version ne sont pas toujours exacts. Au lieu de cela, vous pouvez définir une plage de versions. De cette façon, vous pouvez choisir une version majeure et mineure spécifique d’un package, mais autoriser npm à installer le dernier correctif susceptible de corriger certains bogues.

Dans un monde idéal de versioning sémantique, les versions corrigées n’incluront aucune modification majeure. Mais malheureusement, ce n’est pas toujours le cas. La stratégie employée par npm peut avoir pour résultat que deux machines se retrouvent avec le même package.json fichier, mais ayant différentes versions d’un paquet installé – ce qui peut introduire des bogues.

Pour éviter les incompatibilités de version de package, une version installée exacte est épinglée dans un fichier de verrouillage de package. Chaque fois qu’un module est ajouté, npm et Yarn créent (ou mettent à jour) un package-lock.json et yarn.lock fichier respectivement. De cette façon, vous pouvez garantir qu’une autre machine installe exactement le même package, tout en conservant une plage de versions autorisées définies dans package.json.

Utilisation des espaces de travail

Les espaces de travail vous permettent d’en avoir un monorepo pour gérer les dépendances entre plusieurs projets. Cela signifie que vous avez un seul package racine de niveau supérieur qui a plusieurs packages enfants appelés espaces de travail.

Exécuter des scripts à distance

Le npx La commande est utilisée pour exécuter des scripts à partir de ./node_modules/.bin. Il vous permet également d’exécuter des packages à partir du registre npm sans les installer dans les dépendances de votre projet. Par exemple, vous pouvez créer une nouvelle application React en exécutant ce qui suit :

npx create-react-app my-app

Dans Yarn, vous pouvez obtenir le même résultat en utilisant l’équivalent dlx commande:

yarn dlx create-react-app my-app

Le reste des fonctionnalités que nous allons explorer sont uniques à Yarn.

Aucune installation

Aucune installation ne stocke le cache dans le répertoire de votre projet, dans un .yarn dossier. Lorsque vous utilisez des commandes telles que yarn ou alors yarn add <package>Le fil créera un .pnp.cjs dossier. Ce fichier contient une hiérarchie de dépendances utilisée par Node pour charger vos packages de projet. Ainsi, vous pouvez y accéder presque à l’instant zéro.

Plug’n’Play

Plug’n’Play est une stratégie d’installation alternative. Au lieu de générer un node_modules répertoire et laissant la résolution à Node, Yarn génère un seul .pnp.cjs fichier qui mappe les packages à leur emplacement sur le disque et à leur liste de dépendances. Cette fonctionnalité peut conduire à un démarrage plus rapide du projet, à une arborescence de dépendances mieux optimisée, à un temps d’installation plus rapide et, bien sûr, supprime le besoin d’un node_modules dossier.

Licences

Yarn contient un vérificateur de licence intégré qui peut être utile dans différents scénarios lorsque vous développez des applications.

Yarn vs npm : quel gestionnaire de package choisir

Nous avons couvert les diverses similitudes et différences entre npm et Yarn, mais nous n’avons pas établi laquelle est la meilleure et laquelle choisir. Comme toujours, la réponse dépend de nos envies et de nos exigences.

En guise de guide général, permettez-moi de conclure avec les conseils suivants :

  • Choisissez npm si vous êtes satisfait de votre flux de travail actuel, que vous ne souhaitez pas installer d’outil supplémentaire et que vous ne disposez pas de beaucoup d’espace disque.

  • Choisissez Yarn si vous voulez des fonctionnalités intéressantes telles que Plug’n’Play, vous avez besoin de fonctionnalités manquantes dans npm et vous disposez de suffisamment d’espace disque.

Si vous avez toujours du mal à prendre une décision claire entre npm et Yarn, vous pouvez vérifier pnpmqui essaie de combiner le meilleur des deux gestionnaires de packages et est le troisième gros poisson du pool de gestion de packages.

Fil vs npm : conclusion

Nous avons vu à quel point les gestionnaires de packages sont importants pour le développement Web moderne et nous avons comparé les deux rivaux les plus populaires du marché. Ils ont tous deux leurs avantages et leurs inconvénients, et afin de choisir le meilleur pour vous, vous devez avoir une idée claire de vos besoins. La meilleure façon de décider lequel vous convient le mieux est de les essayer tous les deux et de voir lequel fonctionne le mieux.

Et enfin, n’y pensez pas trop. Choisissez-en un et passez à la partie amusante : créer de superbes applications !




Source link