Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Anjali Ariscrisnã
André Santos

Min Read

19 avril 2024

Yarn vs NPM : quel gestionnaire de packages dois-je utiliser ?

Qu'est-ce que le NPM ? Et qu'est-ce que Yarn ?

NPM et fil sont deux des gestionnaires de packages les plus populaires parmi les développeurs JavaScript et Node.js. Ils permettent de gérer les dépendances d'un projet, c'est-à-dire tout élément sur lequel repose un projet, ou un bout de code nécessaire à son bon fonctionnement. Nous en avons besoin car la maintenance des dépendances du projet est une tâche difficile qui nécessite de les installer, de les désinstaller, de les modifier ou de les mettre à niveau.

Laissez cet article vous aider à comprendre en quoi consiste exactement gestionnaires de packages sont, comment Yarn contre NPM se comparent les uns aux autres et lesquels fonctionnalités faire en sorte que travailler avec l'un soit meilleur qu'avec l'autre.

blue arrow to the left
Imaginary Cloud logo

Qu'est-ce qu'un gestionnaire de packages ?

Gestionnaires de packages ou Systèmes de gestion des colis sont des ensembles d'outils qui vous permettent d'installer, de supprimer, de modifier, de mettre à niveau et de configurer des programmes informatiques, ainsi que d'auditer les dépendances et de signaler ceux qui doivent être mis à niveau pour atténuer les vulnérabilités potentielles.

Dans le monde d'aujourd'hui, les développeurs s'appuient sur logiciel packagé, ce qui signifie que le logiciel est fourni dans un seul fichier qui regroupe tout ce qui est nécessaire pour faire fonctionner ce logiciel sur notre système. Si ce n'est pas tout, il contient au moins des références indiquant où le système peut obtenir les informations dont il a besoin.

Pour indiquer à un système de gestion de paquets comment gérer ce qu'il contient, les packages contiennent :

  • Code source
  • Binaires prédéfinis
  • Scripts
  • Métadonnées

Les scripts et les métadonnées, par exemple, répondent à des questions telles que :

  • Le logiciel doit-il être transféré dans un dossier distinct ?
  • Doit-il être compilé ?
  • Existe-t-il des dépendances ou des prérequis à respecter en installant d'autres logiciels pour qu'il fonctionne correctement ?
  • Que faire avant ou après la compilation ou le déplacement des fichiers vers leur destination finale ?


Toutes les informations nécessaires pour répondre à ces questions sont regroupés dans un package, comme Yarn contre NPM. Examinons maintenant chacun de ces gestionnaires de packages.

blue arrow to the left
Imaginary Cloud logo

Qu'est-ce que le NPM ?

NPM (Node Package Manager) est l'outil de ligne de commande standard pour installation des dépendances de Node.js et un base de données publique de packages JavaScript, récemment acquis par Microsoft. Il représente le point d'entrée dans l'écosystème des modules JavaScript open source et les outils nécessaires à l'utilisation et à la gestion de ces modules.

À quoi sert Node Package Manager ?

Il est couramment utilisé pour publier, localiser, installer et développer des programmes et des applications Node. Pour cela, il fait appel à de multiples composants différents :

  • Registre Node Package Manager
  • Le npmjs.com site web
  • Outil de ligne de commande NPM
  • NPM, Inc.

Registre NPM

Le Registre NPM est un élément important de l'écosystème Node Package Manager. Son registre de logiciels est base de données publique de code JavaScript, d'outils, de bibliothèques et de frameworks disponibles au téléchargement et à l'utilisation dans vos applications.

Ce registre est le plus grand registre de logiciels sur Internet, avec actuellement près d'un million de packages disponibles en ligne. Tout le monde peut distribuer librement ses Modules JavaScript en les publiant sous forme de packages sur NPM. Le registre est à la base, connectant des millions de développeurs du monde entier aux packages et aux outils dont ils ont besoin pour accomplir leur travail.

Au lieu de rédiger votre candidature entièrement à partir de zéro, vous pouvez utiliser modules publiés par Node Package Manager pour vous aider dans votre processus de développement. Par exemple, Express.js est le framework de serveur le plus populaire pour Node.js. Vous pouvez le télécharger depuis NPM et faire fonctionner un serveur en quelques lignes de code.

Cette disponibilité de les modules réutilisables permettent d'accélérer le développement de Node.js de manière significative en réduisant la quantité de code spécifique à l'application que vous devez écrire.

npmjs.com

Compte tenu du volume incroyable de packages disponibles dans le registre, il peut être difficile de trouver le bon pour résoudre votre problème. Mais c'est là que Site web du NPM est très pratique.

<a href="www.npmjs.com » ; target="_blank">npmjs.com est l'interface Web du registre Node Package Manager. C'est l'endroit central pour rechercher parmi tous les packages publics disponibles dans l'écosystème NPM.

Chaque package du registre possède sa propre page sur le site Web de Node Package Manager. Vous pouvez consulter les détails des packages, les statistiques d'utilisation, les liens vers le référentiel des packages, le suivi des problèmes et d'autres métadonnées relatives à chaque package. Ces informations sont très utiles pour choisir un package pour votre candidature.

Comme tout le monde peut publier dans le registre NPM, il n'existe aucune garantie de qualité pour un package en particulier. Donc, dans la mesure du possible, nous vous suggérons choisissez un package populaire et activement maintenu qui met l'accent sur le problème que vous essayez de résoudre de manière plus spécifique.

Consultez la liste des packages disponibles sur npmjs.com

Outil de ligne de commande NPM

Le Ligne de commande NPM (CLI) l'outil est le gestionnaire de packages par défaut fourni avec Node.js. Cela vous aide installer et gérer les dépendances. Il est chargé de récupérer les packages du registre et de les installer dans votre node_modules répertoire, où ils sont accessibles depuis votre code.

Il sera également mettre à jour les dépendances lister dans votre package.json fichier lors de l'installation de nouvelles dépendances, ce qui est essentiel.

Il est important de mentionner que la CLI est utile au-delà de l'installation de dépendances. Il est avec vous pendant toutes les étapes du cycle de développement, pour vous aider créer, exécuter, gérer et partager des packages et des applications Node.js. De nombreuses commandes sont disponibles, mais voici quelques-unes des plus importantes :

  • installation de npm - Vous aide à installer des dépendances.
  • initialisation npm - Utilisé pour générer un package.json dossier.
  • audit NPM - Demande un rapport sur les vulnérabilités connues.
  • mise à jour npm - Vous aide à mettre à jour les versions installées de vos dépendances.
  • désinstallation de npm - Supprime les dépendances des deux package.json et le node_modules annuaire.
  • exécuter npm - Vous aider à exécuter les scripts configurés dans votre package.json.
  • démarrage npm - Exécute le script de démarrage de votre projet.
  • npm publie - Publie votre package dans le registre NPM.

NPM Inc.

NPM Incorporated, la société est responsable de l'hébergement et de la maintenance du registre NPM et de npmjs.com.

Node Package Manager a commencé comme un programme open source créé en 2009. Depuis lors, il s'est considérablement développé. En 2014, NPM Inc. a été fondée pour soutenir le registre Node Package Manager en tant que service gratuit durable.

Le principal produit à but lucratif de la société propose des packages de publication privés au registre NPM pour un usage interne par les entreprises, les équipes et les entreprises. Cependant, un compte payant est purement facultatif et il reste un service gratuit auquel vous n'êtes pas obligé de vous inscrire.

Comme nous l'avons déjà mentionné, le registre NPM est un élément essentiel de l'écosystème JavaScript, et il est important de comprendre qui est responsable de cet écosystème. Actuellement, il s'agit de NPM Inc., car ils contrôler le registre et prendre des décisions concernant son avenir.

Lisez aussi :

Qu'est-ce que Yarn ?

Yarn est un package JavaScript et un gestionnaire de dépendances. créé par Facebook en 2016 et soutenu par Google, Exponent et Tilde. Il a été créé pour remédier aux lacunes des anciennes versions de la CLI NPM et a rapidement attiré l'attention et le soutien d'une grande communauté open source.

Aujourd'hui, Yarn est une alternative populaire à npm car il est rapide et facile à utiliser.

Comme NPM, Yarn vous permet d'utiliser et de partager du code avec d'autres développeurs du monde entier, vous n'avez donc pas à réinventer la roue, c'est-à-dire que vous pouvez utiliser du code écrit et publié par d'autres développeurs. Cela vous permet de créer plus facilement des logiciels en vous permettant d'utiliser les réponses d'autres développeurs à des problèmes spécifiques.

Étant donné que Yarn est construit sur le registre de NPM, les packages publiés ici sont également disponibles sur Yarn, ce qui permet une mise à niveau fluide.

À quoi sert le gestionnaire de packages Yarn ?

Le rôle des gestionnaires de packages tels que Yarn doit vous permettre d'installer des fonctionnalités rapidement et en toute sécurité; cela se fait également via des instructions en ligne de commande.

Chaque fois qu'une fonctionnalité est ajoutée, elle télécharge le code nécessaire depuis un référentiel et l'ajoute au projet, ainsi que les références nécessaires au cas où le package aurait besoin d'autres bibliothèques comme dépendance pour fonctionner correctement.

Yarn est donc un gestionnaire de packages qui installe, modifie et supprime des fonctionnalités dans les applications Web. C'est également un outil open source qui a vu le jour pour améliorer certains problèmes rencontrés par Node Package Manager, tels que la lenteur et l'impossibilité d'installer des packages hors ligne.

Une particularité de l'architecture de Yarn est la manière d'installer les packages, qui se fait en trois étapes distinctes :

  • Résolution - Où Yarn effectue des recherches sur les enregistrements pour vérifier les dépendances existantes.
  • Recherche dans le cache - Yarn recherche les dépendances requises dans le cache pour voir si elles ont déjà été téléchargées. S'ils n'existent pas, ils sont d'abord téléchargés dans le cache.
  • Installation - Enfin, les dépendances sont installées dans le »node_modules « ou ».fil «, en fonction de la version (Yarn 2, que nous aborderons bientôt), et mis à jour dans les fichiers de contrôle Yarn.

Comme Yarn vous donne accès aux mêmes packages que Node Package Manager, ses commandes de dépendance sont très similaires :

  • ajout de fil - Ajoute un package à votre package existant.
  • Init de laine - Démarre le processus de développement du package.
  • installation de fil - Installe toutes les dépendances du package dans le package.json fichier
  • yarn publish - Envoie un package au système de gestion des packages.
  • enlever le fil - Supprime un package inutile du package actuel.

Yarn 4 : La dernière version de Yarn

Fil 4 élargit encore l'impressionnant parcours d'innovation du gestionnaire de packages Yarn. Cette version offre de nombreuses améliorations par rapport à la précédente et introduit de nouvelles fonctionnalités, telles qu'un processus d'installation simplifié, Plug'n'Play allant encore plus loin.

Voici les facettes passionnantes de Yarn 4 :

  • Il adopte une approche de pointe en matière de gestion des dépendances avec une prise en charge améliorée de l'espace de travail.
  • Yarn 4 introduit une commande revitalisée, « yarn dlx », pour exécuter efficacement des scripts à instance unique.
  • L'un des points forts de Yarn 4 est son architecture modulaire, qui rend le développement de plugins encore plus simple. Il est essentiel de reconnaître que de nombreuses fonctionnalités fondamentales de Yarn sont mises en œuvre efficacement en tant que plugins.
  • L'avantage le plus remarquable de Yarn 4 réside dans la mise à niveau du mécanisme d'installation Plug'n'Play (PNP), qui est désormais plus efficace que la méthode traditionnelle d'installation de packages.
blue arrow to the left
Imaginary Cloud logo

Commandes Yarn et NPM

Voici un tableau qui fournit une référence rapide permettant aux développeurs de comprendre les commandes équivalentes entre npm et yarn pour diverses tâches :

blue arrow to the left
Imaginary Cloud logo

Yarn vs NPM : Lequel est le meilleur ?

Dépendances

Laine

La version 1 de Yarn et NPM gèrent les dépendances de la même manière. Ils conservent les métadonnées dans le package.json fichier, qui est stocké dans le sous-répertoire - node_modules.

Yarn ne suit plus les dépendances dans le sous-répertoire des modules de nœuds depuis la version 2. Yarn 2.0, quant à lui, utilise le Plug'n'Play fonctionnalité, qui crée un .pnp.cjs dossier. Ce fichier présente un diagramme de la hiérarchie des dépendances d'un projet.

Yarn installe les dépendances à l'aide du fil commande. Il installe les dépendances simultanément, c'est-à-dire en parallèle, ce qui vous permet d'ajouter plusieurs fichiers simultanément. Lorsque vous installez des dépendances, un fichier de verrouillage contenant la liste précise des dépendances utilisées est créé. Ce fichier est connu sous le nom de fil. Lock .

NPM

Node Package Manager installe les dépendances une par une par le biais du installation de npm commande.

Elle produit également un bloc-paquet.json fichier de verrouillage de version. Ce fichier est également pris en charge par Yarn, permettant aux utilisateurs de déplacer les données de version de Node Package Manager vers Yarn.

Sécurité

Laine

Lors du téléchargement de packages, Yarn effectue un contrôle de sécurité en arrière-plan. Il utilise les informations de licence du package pour éviter de télécharger des scripts dangereux ou de provoquer des problèmes de dépendance.

Pour garantir un flux de données sécurisé, les deux utilisent des techniques de cryptage. Yarn valide les packages à l'aide de sommes de contrôle, tandis que NPM utilise le bloc-paquet.json SHA-512 (algorithme de hachage sécurisé) du fichier.

NPM

Dans ses versions précédentes, les problèmes de sécurité constituaient une préoccupation majeure. Désormais, chaque fois que vous installez un package, il effectue une évaluation de sécurité à partir de la version 6. Cela permet de éviter les vulnérabilités et assure que aucune dépendance n'est incompatible.

Le audit NPM La commande peut également être utilisée pour effectuer un audit manuel. S'il découvre des vulnérabilités, utilisez correctif d'audit npm pour résoudre les problèmes.

Caractéristiques

Les deux gestionnaires de packages partagent plusieurs caractéristiques fondamentales :

  • Création de fichiers de verrouillage - Les deux gestionnaires de packages produisent un fichier de verrouillage de version par défaut. Ce fichier est appelé fil. Lock dans Yarn et bloc-paquet.json dans NPM.
  • Scripts distants - À l'aide du npx commande dans NPM et fil DLX commande dans Yarn, vous pouvez exécuter des scripts à distance dans NPM et Yarn.
  • Utilisation des espaces de travail - Ils activent tous deux des espaces de travail, qui vous permettent de gérer les dépendances de différents projets à partir d'un seul référentiel.

Comme déjà mentionné ci-dessus, les caractéristiques uniques de Yarn incluent :

  • Plug'n'Play - Le fil produit une seule .pnp.cjs fichier qui mappe les dépendances du projet au lieu d'utiliser le dossier node modules. Cela se traduit par des arbres de dépendance plus rationalisés et un lancement de projet et une installation de packages plus rapides.
  • Aucune installation - Fonctionne avec Plug'n'Play, car il utilise .pnp.cjs fichier pour mapper les packages stockés dans le cache hors ligne. Cela vous permet de récupérer et d'installer rapidement les packages qui ont été enregistrés.
  • Vérification de licence - Yarn dispose d'un vérificateur de licences intégré lors de l'obtention et de l'installation de packages.

Vitesse

Comme indiqué précédemment, Yarn installe les packages de dépendances en parallèle, alors que Node Package Manager les installe de manière séquentielle. En conséquence, Yarn est plus performant lors de l'installation de fichiers plus volumineux.

Les deux outils peuvent économiser fichiers dépendants vers le cache hors ligne. Cela permet aux utilisateurs d'installer des dépendances même lorsqu'ils non connecté à Internet.

Le fil utilise également le Aucune installation fonctionnalité à partir de la version 2. Cette fonctionnalité exploite la carte des dépendances du .pnp.cjs fichier pour effectuer une installation de dépendance hors ligne sans aucun délai.

Lisez aussi :

blue arrow to the left
Imaginary Cloud logo

Devriez-vous utiliser Yarn ou npm en 2024 ?

Quel est le meilleur gestionnaire de packages à utiliser pour vos projets ? En 2024, les deux concurrents les plus populaires continueront d'être npm, le gestionnaire de packages d'origine de Node.js, et Laine, le petit nouveau du quartier. Les deux ont des points forts remarquables et certaines zones doivent être polies. La question se résume donc à ceci : devriez-vous choisir Yarn ou npm en 2024 ?

Laine : pour plus de rapidité et de sécurité

Si la vitesse et les dépendances déterministes sont importantes pour vous, Yarn sera votre meilleur choix. Yarn a popularisé les fichiers de verrouillage, garantissant que les mêmes versions des dépendances sont installées sur différents systèmes. Il a été conçu à l'origine pour être plus rapide, ce qui est toujours le cas aujourd'hui. Leur prise en charge avancée de monorepo via des espaces de travail est conçue pour simplifier l'orchestration des packages et des dépendances monorepo.

Avantages :

  • Yarn fournit un cache hors ligne, ce qui augmente considérablement la vitesse.
  • Prend en charge les espaces de travail qui aident à gérer Monorepo.
  • Garantit des installations de dépendances déterministes grâce à son fichier Yarn.lock.

Inconvénients :

  • Même si Yarn a lancé sa deuxième version majeure, elle est toujours en cours de finalisation et certains développeurs ont du mal à s'adapter à la nouvelle mise à niveau.
  • Les outils communautaires ne sont pas tous compatibles avec Yarn.

npm - Pour une expérience stable et robuste

npm a rattrapé Yarn de manière impressionnante. Grâce aux améliorations significatives influencées par le modèle de Yarn, la CLI npm fournit un fichier de verrouillage (package-lock.json) pour les installations déterministes et fait un travail remarquable avec ses fonctionnalités globales. En outre, la sécurité est de plus en plus ciblée grâce à des fonctionnalités telles que les alertes automatiques pour les dépendances vulnérables et le correctif d'audit npm. De plus, les commandes npm sont généralement plus intuitives et plus faciles à mémoriser.

Avantages :

  • La version de npm prend en charge les espaces de travail, ce qui était auparavant une piste majeure pour Yarn.
  • Fourni avec Node.js, ce qui simplifie la configuration initiale.
  • Des commandes CLI riches et simples et un registre de packages plus complet.

Inconvénients :

  • Les performances peuvent être inférieures à celles de Yarn, en particulier lorsqu'il s'agit de bases de code volumineuses.
  • La résolution et la gestion de plusieurs versions d'un même package sont généralement compliquées.

Que devriez-vous choisir ?

La décision se résume à ce qui vous tient le plus à cœur et à ce qui correspond le mieux aux exigences de votre projet. La rapidité et l'efficacité de la manipulation des monorepos font pencher la balance en faveur de Yarn. À l'inverse, npm est votre choix de prédilection si vous recherchez de la stabilité, un écosystème robuste et une structure de commande plus simple. Quoi qu'il en soit, npm et Yarn présentent d'énormes avantages qui méritent d'être pris en compte, garantissant que votre processus de développement en 2024 deviendra à la fois efficace et agréable.

blue arrow to the left
Imaginary Cloud logo

Conclusion

Compte tenu des différences et des caractéristiques abordées entre Yarn et NPM, cette dernière option est préférable pour les développeurs qui connaissent et apprécient son flux de travail actuel. Il offre une expérience utilisateur décente tout en économisant de l'espace sur le disque dur.

Le fil a des composants plus complexes comme l'installation de Plug'n'Play et Zero via Yarn 2. C'est aussi améliore les performances et la sécurité, mais au détriment de la capacité du disque dur.

Comme nous pouvons le constater, les deux technologies sont utilisées de la même manière, vous devez donc analyser la priorité de votre projet et vos préférences au moment de choisir entre les deux.

N'oubliez pas que (jusqu'à présent) les deux sont compatibles, ce qui signifie que vous pouvez passer de l'un à l'autre avec les paramètres appropriés lors du développement d'un projet si nécessaire.

New call-to-action
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
Anjali Ariscrisnã
Anjali Ariscrisnã

Un spécialiste du marketing de croissance polyvalent et axé sur les données, doté d'une connaissance approfondie des affaires et informé des derniers développements dans le paysage du marketing numérique.

Read more posts by this author
André Santos
André Santos

Votre développeur web de tous les jours qui aime se cacher dans le backend. Javascript et Ruby sont mes préférés. Je me débrouille toujours avec Docker et mes builds se cassent assez souvent.

Read more posts by this author

People who read this post, also found these interesting:

arrow left
arrow to the right
Dropdown caret icon