Maison >interface Web >js tutoriel >Fil vs npm: tout ce que vous devez savoir

Fil vs npm: tout ce que vous devez savoir

Jennifer Aniston
Jennifer Anistonoriginal
2025-02-09 09:28:13397parcourir

Yarn vs npm: Everything You Need to Know

Cet article plongera dans deux gestionnaires de packages JavaScript populaires, les fils et le NPM, et comparent leurs avantages et inconvénients respectifs pour vous aider à choisir le bon outil pour votre projet.

Points de base

  • Le fil et le NPM sont tous deux des gestionnaires de packages populaires, chacun avec leurs avantages et leurs inconvénients. Le fil, développé par Facebook, est plus rapide, plus sécurisé et plus fiable dans la gestion des dépendances. En tant que gestionnaire de package par défaut pour Node.js, NPM a une base d'utilisateurs plus grande et sa syntaxe plus simple est plus facile à utiliser pour les débutants.
  • Packages d'installation parallèles du fil, généralement plus rapidement que NPM (packages d'installation séquentiels). Cependant, les dernières versions de ces deux gestionnaires de packages sont à la même vitesse.
  • En termes de sécurité, le fil utilise une somme de contrôle pour vérifier l'intégrité de chaque package installé avant d'exécuter le code de package. Le NPM a également apporté des améliorations significatives à ses fonctionnalités de sécurité dans les versions récentes, y compris des audits de package lors de l'installation.
  • YARN propose des fonctionnalités uniques telles que Plug’n’play, zéro installation et vérificateur de licence intégré. Cependant, il nécessite plus d'espace disque que le NPM. Le choix entre le fil et le NPM doit être basé sur les besoins individuels et les préférences de flux de travail.

bases

Dans le passé, un simple éditeur de texte était suffisant pour que les développeurs puissent créer et gérer la plupart des projets. Mais maintenant, Internet a subi des changements à la terre. Maintenant, même un projet assez simple peut contenir des centaines, voire des milliers de scripts, ainsi que des dépendances imbriquées complexes qui ne peuvent tout simplement pas être gérées sans une sorte d'outil d'automatisation. C'est là que le gestionnaire de packages entre en jeu.

Package Manager est un outil qui gère automatiquement les dépendances de projet de plusieurs manières. Par exemple, avec le gestionnaire de packages, nous pouvons installer, désinstaller, mettre à jour et mettre à niveau les packages, configurer les paramètres du projet, exécuter les scripts, etc. Tout le travail fastidieux est effectué par le gestionnaire de packages, nous avons juste besoin de nous concentrer sur l'encodage lui-même.

NPM signifie Node Package Manager. Il a été publié en 2010, ouvrant une nouvelle ère de développement Web. Avant cela, les dépendances du projet ont été téléchargées et gérées manuellement. Le NPM est la baguette qui conduit le Web à un niveau supérieur.

NPM contient en fait trois parties:

  • a site Web pour gérer tous les aspects de l'expérience NPM;
  • A
  • Enregistrement pour accéder à une énorme base de données de packages JavaScript public; a
  • Interface de ligne de commande
  • (CLI) pour interagir avec le NPM via le terminal.
  • Mais lorsque la plupart des gens parlent de NPM, ils se réfèrent généralement au dernier - l'outil CLI. Il est fourni comme gestionnaire de package par défaut avec chaque nouvelle installation de nœud. Cela signifie que vous pouvez commencer à l'utiliser immédiatement.

Si vous souhaitez creuser dans la façon d'utiliser NPM, consultez notre Guide de gestionnaire de package de nœuds.

Le fil signifie un autre négociateur de ressources. Le gestionnaire de packages Yarn est une alternative au NPM, publié par Facebook en octobre 2016. L'objectif initial de Yarn était de résoudre les lacunes du NPM, telles que les problèmes de performance et de sécurité. Le fil est rapidement devenu un outil de gestion de dépendance JavaScript sécurisé, rapide et fiable.

Mais l'équipe NPM a appris la leçon et a rapidement compensé les lacunes de NPM en mettant en œuvre les fonctionnalités manquantes.

passons rapidement l'histoire pour comprendre la situation globale:

  • 2010: NPM publié, support de support.
  • 2016: Publié par Yarn. Il montre des performances plus élevées que le NPM. Il génère également un fichier yarn.lock, rendant le partage et la réplication précise des référentiels plus faciles et plus prévisibles.
  • 2017: NPM 5 est sorti. Il fournit une génération automatique de fichiers package-lock.json en réponse à yarn.lock.
  • 2018: NPM 6 est publié, Améliorations de la sécurité. NPM vérifie désormais les vulnérabilités de sécurité avant d'installer les dépendances.
  • 2020: Libération YARN 2 et NPM 7. Les deux packages ont de nouvelles fonctionnalités puissantes, que nous verrons plus tard dans ce tutoriel.
  • 2021: YARN 3 libéré avec diverses améliorations.

Ces deux gestionnaires de packages sont comparables dans les concours de gestion des packages et offrent des fonctionnalités similaires. Mais il y a encore des différences qui nous aident à déterminer lequel utiliser.

Dans le reste de ce tutoriel, nous explorerons les principales similitudes et différences entre le NPM et le fil.

fil vs NPM: comparaison d'installation

Nous allons commencer par le processus d'installation du NPM et du fil.

Installation du gestionnaire de packages lui-même

Comme mentionné ci-dessus, le NPM est préinstallé dans le nœud, il n'est donc pas nécessaire d'installer manuellement le NPM.

Au lieu de cela, le fil doit être installé explicitement. Tout d'abord, nous devons installer du fil:

<code class="language-bash">npm install -g yarn</code>

Nous pouvons ensuite l'utiliser sur une base par projet en exécutant la commande de version de Yarn Set dans le répertoire racine du projet:

<code class="language-bash">yarn set version berry</code>

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

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

<code class="language-bash">yarn set version latest</code>

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

Pour faire de même avec NPM, vous devez installer NVM (Node Version Manager). Voici comment installer plusieurs versions de nœuds à l'aide de NVM.

Installation des dépendances du projet

Maintenant, voyons comment installer les dépendances du projet.

Lorsque nous exécutons l'installation de NPM, les dépendances sont installées à leur tour. Les journaux de sortie dans le terminal sont riches en informations, mais ils sont un peu difficiles à lire.

Pour utiliser le package d'installation du fil, nous exécutons la commande du fil. Packages d'installation parallèles du fil, ce qui est l'une des raisons pour lesquelles il est plus rapide que NPM. Si vous utilisez YARN 1, vous verrez que le journal de sortie du fil est concis et facile à distinguer visuellement. Ils sont également triés sous forme d'arbres pour une compréhension facile. Mais dans les versions 2 et 3, les journaux ne sont pas si intuitifs.

Jusqu'à présent, nous avons vu que NPM et YARN ont différentes commandes de packages d'installation. Dans la section suivante, nous explorerons plus de commandes.

Comparez les commandes NPM et YARN

NPM et YARN partagent de nombreuses commandes, mais il existe différentes commandes. Explorons d'abord certaines des mêmes commandes:

  • npm init |
  • NPM Run |
  • Test de NPM |
  • NPM Publish |
  • NPM Cache Clean |
  • Ces commandes facilitent le basculement entre deux managers, mais il existe des commandes différentes qui peuvent être déroutantes. Voyons ce qu'ils sont dans la liste suivante:
  • Installation de NPM |
NPM INSTALLATION [Package] |

Installation de NPM - Save-dev [package] |

NPM Désinstaller [Package] |
    NPM Uninstall - Save-dev [package] |
  • Mise à jour NPM |
  • NPM Update [Package] |
  • Le fil a également des commandes uniques que NPM n'a pas. Par exemple, la commande pourquoi montre pourquoi des packages sont nécessaires: il pourrait s'agir d'une dépendance, d'un module local ou d'une dépendance de projet.
  • FILS VS. NPM: vitesse et performances
  • Chaque fois que le fil ou le NPM doit installer un package, ils effectuent une série de tâches. Dans NPM, ces tâches sont effectuées par des packages, ce qui signifie qu'il continuera au prochain package une fois qu'un package est entièrement installé. Au lieu de cela, le fil effectue ces tâches en parallèle, améliorant ainsi les performances.
  • Bien que les deux gestionnaires fournissent des mécanismes de mise en cache, le fil semble faire un peu mieux. En implémentant le paradigme d'installation zéro (que nous verrons dans la section de comparaison des fonctionnalités), il est capable d'installer des packages presque immédiatement. Il cache chaque package et l'enregistre sur le disque, donc la prochaine fois que vous installerez ce package, vous n'avez même pas besoin d'une connexion Internet car le package est installé hors ligne à partir du disque.
  • Bien que le fil présente certains avantages, dans sa dernière version, le fil et le NPM sont à des vitesses comparables. Par conséquent, nous ne pouvons pas définir un gagnant clair ici.

fil vs NPM: comparaison sûre

L'une des principales critiques du NPM concerne la sécurité. Les versions NPM précédentes avaient de sérieuses vulnérabilités de sécurité.

à partir de la version 6, NPM vérifie le package lors de l'installation et vous indique si vous trouvez des vulnérabilités. Nous pouvons effectuer ce chèque manuellement en exécutant l'audit NPM sur les packages installés. Si des vulnérabilités sont trouvées, NPM nous fournira des conseils de sécurité.

Comme le montre la figure ci-dessus, nous pouvons exécuter un correctif d'audit NPM pour corriger les vulnérabilités du package, et si elle peut être corrigée, l'arborescence de dépendance sera également corrigée.

Le fil et le NPM utilisent tous deux des algorithmes de hachage cryptographique pour assurer l'intégrité des paquets.

FILS VS. NPM: comparaison fonctionnelle

Comme avec les commandes, NPM et YARN partagent certaines fonctionnalités, mais il existe des différences. Explorons d'abord les fonctionnalités communes partagées par ces deux gestionnaires de packages.

générer un fichier verrouillé

Dans package.json (le fichier que NPM et le fil sont utilisés pour suivre les dépendances du projet), le numéro de version n'est pas toujours précis. Au lieu de cela, vous pouvez définir une plage de versions. De cette façon, vous pouvez sélectionner une version majeure et mineure spécifique du package, mais permettre à NPM d'installer les derniers correctifs qui peuvent corriger certains bogues.

Dans le monde idéal du versioning sémantique, la version patch ne contient aucun changement significatif. Mais malheureusement, ce n'est pas toujours le cas. La stratégie utilisée par NPM peut faire en sorte que les deux machines se retrouvent avec le même fichier package.json, mais ont différentes versions du package installées - cela peut introduire une erreur.

Pour éviter le décalage de la version du package, la version exacte installée est fixée dans le fichier de verrouillage du package. Chaque fois qu'un module est ajouté, NPM et YARN créent (ou mettent à jour) des fichiers Package.json et Yarn.lock, respectivement. De cette façon, vous pouvez vous assurer qu'une autre machine installe exactement le même package tout en définissant une série de versions autorisées dans package.json.

en utilisant l'espace de travail

L'espace de travail vous permet d'avoir un monorepo pour gérer les dépendances dans plusieurs projets. Cela signifie que vous disposez d'un seul package racine de niveau supérieur qui a plusieurs sous-packages appelés espaces de travail.

exécuter les scripts à distance

La commande

npx 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 vos dépendances de projet. Par exemple, vous pouvez créer une nouvelle application React en exécutant la commande suivante:

<code class="language-bash">npm install -g yarn</code>

Dans le fil, vous pouvez utiliser la commande DLX équivalente pour obtenir le même résultat:

<code class="language-bash">yarn set version berry</code>

Les autres fonctionnalités que nous explorerons sont uniques au fil.

zéro installation

zéro installation stocke le cache dans votre répertoire de projet, situé dans le dossier .yarn. Lorsque vous utilisez des commandes telles que le fil ou le fil Ajouter , le fil crée un fichier .pnp.cjs. Ce fichier contient le nœud de hiérarchie de dépendance utilisé pour charger des packages de projet. Vous pouvez donc y accéder presque immédiatement.

plug’n’play

plug’n’play est une stratégie d’installation alternative. Le YARN ne génère pas le répertoire Node_Modules et laisse l'analyse au nœud, mais génère plutôt un seul fichier .pnp.cjs qui mappe les packages aux emplacements sur disque et sa liste de dépendances. Cette fonction peut accélérer le démarrage du projet, optimiser les arbres de dépendance, accélérer l'installation et bien sûr éliminer le dossier Node_Modules.

limite

YARN a un vérificateur de licence intégré, ce qui est très utile dans différents scénarios lors du développement d'applications.

YARN vs NPM: quel gestionnaire de packages choisir

Nous avons couvert les différentes similitudes et différences entre le NPM et le fil, mais nous n'avons pas encore déterminé lequel est le meilleur et lequel devons-nous choisir. Comme toujours, la réponse dépend de nos désirs et de nos besoins.

En tant que guide général, je résume les suggestions suivantes:

  • Si vous êtes satisfait de votre flux de travail actuel, ne souhaitez pas installer d'autres outils et que vous avez insuffisant un espace disque, sélectionnez NPM.
  • Si vous voulez des fonctionnalités puissantes comme Plug’n’play, vous avez besoin de certaines des fonctionnalités manquantes dans NPM et avez suffisamment d’espace disque, choisissez le fil.

Si vous avez encore du mal à prendre une décision claire entre le NPM et le fil, vous pouvez vérifier PNPM, qui essaie de combiner les avantages de ces deux gestionnaires de package et est le troisième plus grand géant du pool de gestion des packages.

fil vs npm: conclusion

Nous avons appris l'importance des gestionnaires de packages pour le développement Web moderne et nous comparons deux des concurrents les plus populaires du marché. Ils ont tous leurs propres avantages et inconvénients, et pour choisir celui qui vous convient le mieux, vous devez avoir une compréhension claire de vos besoins. La meilleure façon de décider laquelle est la meilleure pour vous est d'essayer les deux et de voir laquelle fonctionne mieux.

Enfin, ne pensez pas trop. Sélectionnez-en un et accédez à la partie amusante: créez une excellente application!

FAQ sur le fil vs npm

Quelle est la principale différence entre le fil et le NPM?

Le fil et le NPM sont tous deux des gestionnaires de packages pour JavaScript, mais ils ont des différences clés. Le fil est développé par Facebook et vise à aborder certaines des lacunes du NPM. Il offre une vitesse plus élevée, une meilleure sécurité et une gestion des dépendances plus fiable. D'un autre côté, NPM est le gestionnaire de package par défaut pour Node.js, avec une base d'utilisateurs plus grande. Il est également plus facile à utiliser par les débutants en raison de sa syntaxe plus simple.

est le fil plus rapide que le NPM?

Oui, le fil est généralement plus rapide que le NPM. En effet, les packages d'installation parallèles de YARN, qui accélère considérablement le processus d'installation. D'un autre côté, NPM installe des packages en séquence, ce qui peut être plus lent.

Comment est la sécurité de Yarn par rapport à la sécurité de NPM?

YARN a une fonctionnalité appelée somme de contrôle qui vérifie son intégrité avant d'exécuter le code du package installé. Cela ajoute une couche de sécurité supplémentaire que NPM n'a pas. Cependant, le NPM a apporté des améliorations significatives à ses fonctionnalités de sécurité dans les versions récentes.

Puis-je utiliser du fil et du NPM dans le même projet?

Bien qu'il soit techniquement possible d'utiliser à la fois le fil et le NPM dans le même projet, cela n'est pas recommandé. En effet, le fil et le NPM gèrent différemment les dépendances, ce qui peut entraîner des incohérences et des erreurs dans le projet.

Comment gérer les dépendances dans le fil par rapport au NPM?

YARN utilise des fichiers de verrouillage pour verrouiller les versions des dépendances du projet. Cela garantit que sur toutes les machines, chaque installation produit exactement la même structure de dossier dans node_modules. NPM utilise également des fichiers verrouillés, mais il n'est pas aussi strict que le fil.

Le fil est-il plus fiable que NPM?

Le fil est généralement considéré comme plus fiable que le NPM en raison de ses capacités strictes de verrouillage des fichiers et de somme de contrôle. Cependant, le NPM a apporté des améliorations significatives de la fiabilité dans les versions récentes.

Comment le soutien communautaire de Yarn se compare-t-il au soutien communautaire de NPM?

NPM a une communauté plus grande et plus de forfaits disponibles en raison de son existence plus longue. Cependant, le fil devient de plus en plus populaire et a une communauté croissante.

Quels sont les défis de la passage du NPM au fil?

Certains des défis de la passage du NPM au fil comprennent l'apprentissage d'une nouvelle syntaxe, la migration des projets existants et l'adaptation à la gestion stricte de la dépendance du fil.

Comment la syntaxe de YARN se compare-t-elle à la syntaxe de NPM?

La syntaxe du fil est légèrement différente de celle du NPM. Par exemple, pour utiliser le package d'installation de YARN, vous pouvez utiliser la commande "Yarn Add" et avec NPM, vous pouvez utiliser "NPM Install".

Pour les débutants, le fil ou le NPM est-il meilleur?

NUM est souvent considéré comme plus facile pour les débutants à utiliser en raison de sa syntaxe plus simple et de sa communauté plus grande. Cependant, le YARN offre des fonctionnalités plus avancées et est un excellent choix pour les développeurs plus expérimentés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn