web-dev-qa-db-fra.com

Quand utiliser Yarn over NPM? Quelles sont les différences?

Quelles sont les différences entre Yarn et NPM? Au moment de la rédaction de cette question, je ne peux que trouver sur Internet des articles montrant l’équivalent filé d’une commande NPM comme this .

Ont-ils les mêmes fonctionnalités (je sais que Yarn fait la mise en cache locale et il semblerait que vous n’ayez besoin de télécharger un package qu’une seule fois), mais à part cela, y at-il des avantages à passer de NPM à Yarn?

75
Asha

MISE À JOUR: Mars 2018 (un peu en retard ...)

Depuis la version 5, npm

  • génère un 'lockfile' appelé package-lock.json qui corrige l’ensemble de votre arbre de dépendance de la même manière que le mécanisme de verrouillage du fil (ou de tout autre),
  • Un outil a été fabriqué
  • --save est maintenant impliqué pour npm i
  • Meilleure utilisation du réseau et du cache

NPM 5.7.0 introduit plus loin le npm ci commande pour installer plus rapidement les dépendances dans un environnement d’intégration continue en installant uniquement les packages présents dans le fichier package-lock.json _ (en signalant une erreur si le package-lock.json et package.json _ ne sont pas synchronisés).

Personnellement , j'utilise toujours npm.


Original

Je suis désolé de citer directement des documents, mais ils font un excellent travail d'expliquer pourquoi, de manière concise, pour ne pas voir comment résumer davantage les des idées.

En grande partie:

  1. Vous savez toujours que vous obtenez la même chose sur chaque machine de développement

  2. Il parallèle les opérations que npm ne fait pas, et

  3. Il utilise plus efficacement le réseau.

  4. Cela peut rendre plus efficace tilisation d'autres ressources du système (telles que la RAM) également.

Quelles sont les expériences de production des gens avec cela? Qui sait, c'est un bébé pour le grand public.

TL; DR de Yehuda Katz :

Dès le début, le fichier de verrouillage de fil garantit que l'exécution répétée de fil sur le même référentiel aboutit aux mêmes packages.

Deuxièmement, Yarn tente d'obtenir de bonnes performances, avec un cache froid, mais surtout avec un cache chaud.

Enfin, Yarn fait de la sécurité une valeur essentielle.

Beau post de blog

NPM vs Fil Cheat Sheet ” par Gant Laborde

Version légèrement plus longue du projet :

Rapide: Yarn met en cache chaque paquet qu'il télécharge afin qu'il ne soit plus jamais nécessaire. Il parallélise également les opérations pour optimiser l'utilisation des ressources afin que les temps d'installation soient plus rapides que jamais.

Fiabilité: En utilisant un format de fichier de verrouillage détaillé, mais concis, et un algorithme déterministe pour les installations, Yarn est en mesure de garantir qu'une installation fonctionnant sur un système fonctionnera exactement de la même manière sur tous les autres systèmes.

Sécurisé: Yarn utilise des sommes de contrôle pour vérifier l'intégrité de chaque package installé avant l'exécution de son code.

Et à partir de the README.md :

  • Mode hors ligne: Si vous avez déjà installé un package, vous pouvez le réinstaller sans connexion Internet.
  • Déterministe: les mêmes dépendances seront installées exactement de la même manière sur tous les ordinateurs, quel que soit l'ordre d'installation.
  • Performances du réseau: le fil met efficacement en file d'attente les demandes et évite les chutes de demandes afin de maximiser l'utilisation du réseau.
  • Registres multiples: installez n'importe quel package à partir de npm ou de Bower et conservez le même flux de production.
  • Résilience du réseau: une requête unique qui échoue ne provoque pas l'échec d'une installation. Les demandes sont réessayées en cas d'échec.
  • Mode plat: Résolvez les versions incompatibles de dépendances en une seule version pour éviter de créer des doublons.
  • Plus d'emojis. ????
54
msanford

Utiliser PNPM

Avantages de PNPM sur Yarn et NPM

pnpm utilise des liens physiques et des liens symboliques pour enregistrer une version d'un module une seule fois sur un disque. Lorsque vous utilisez npm ou Yarn par exemple, si vous avez 100 projets utilisant la même version de lodash, vous aurez 100 copies de lodash sur disque. Avec pnpm, lodash sera enregistré à un emplacement unique sur le disque et un lien physique le placera dans les nœuds_modules où il devrait être installé.

En conséquence, vous économisez des gigaoctets d'espace sur votre disque et vous avez des installations beaucoup plus rapides! Si vous souhaitez plus de détails sur la structure unique node_modules créée par pnpm et pourquoi cela fonctionne bien avec l'écosystème Node.js, lisez ce petit article: Pourquoi devrions-nous utiliser pnpm?

Comment installer?

npm install -g pnpm

maintenant installer le paquet

pnpm install -g TypeScript // or your desired package

Voici la barre de progression indiquant le temps d'installation pris par NPM, YARN et PNPM (plus court est préférable) enter image description here

Cliquez pour compléter le test d'évaluation

pour plus de détails, visitez https://www.npmjs.com/package/pnpm

3
WasiF

Lorsque vous installez un paquet en utilisant Yarn (en utilisant yarn add packagename), il le place sur votre disque . Lors de la prochaine installation, ce paquet sera utilisé au lieu d’envoyer une requête HTTP pour extraire l’archive du registre.

Le fil est fourni avec un vérificateur de licences pratique , qui peut devenir très puissant si vous devez vérifier les licences de tous les modules dont vous dépendez.

Si vous travaillez sur un logiciel propriétaire, peu importe celui que vous utilisez. Avec npm, vous pouvez utiliser npm-shrinkwrap.js, tandis que vous pouvez utiliser yarn.lock avec Yarn.

Pour plus d'informations, veuillez lire le blog suivant

https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/

1
ganesh kalje

Essayer de donner un meilleur aperçu pour les débutants.

npm a toujours été (2010) le gestionnaire de paquets le plus populaire pour JavaScript. Si vous souhaitez l'utiliser pour gérer les dépendances de votre projet, vous pouvez taper la commande suivante:

npm init

Cela générera un fichier package.json. Il contient toutes les dépendances du projet.

Ensuite

npm install

créerait un répertoire node_modules et téléchargerait les dépendances (que vous avez ajoutées au fichier package.json).

Il créera également un fichier package-lock.json. Ce fichier est utilisé pour décrire l’arbre de dépendances généré. Cela permet aux développeurs d'installer exactement les mêmes dépendances. Par exemple, vous pouvez imaginer un développeur mettant à niveau une dépendance vers la v2 puis la v3, tandis qu'un autre effectuant une mise à niveau directe vers la v3.

npm installe les dépendances de manière non déterministe, ce qui signifie que les deux développeurs pourraient avoir un répertoire node_modules différent, aboutissant à comportements différents . ** npm a souffert d'une mauvaise réputation, comme par exemple en février 2018: un problème a été découvert dans la version 5.7.0: l'exécution de Sudo npm sur des systèmes Linux modifierait la propriété des fichiers système et interromprait le système d'exploitation de manière permanente.

Pour résoudre ces problèmes et d'autres, Facebook a introduit un nouveau gestionnaire de paquets (2016): Yarn a gestionnaire de paquets pour JavaScript plus rapide, plus sécurisé et plus fiable .

Vous pouvez ajouter Yarn à un projet en tapant:

yarn init

Cela créera un fichier package.json. Ensuite, installez les dépendances avec:

yarn install

Un dossier node_modules Sera généré. Yarn générera également un fichier appelé yarn.lock. Ce fichier a le même objectif que package-lock.json, Mais est construit à l'aide d'un algorithme déterministe et fiable, ce qui conduit à des constructions cohérentes.

Si vous avez démarré un projet avec npm , vous pouvez migrer vers Yarn facilement. le fil consommera le même package.json. Voir Migration à partir de npm pour plus de détails.

Cependant, npm a été amélioré avec chaque nouvelle version et certains projets utilisent encore npm sur fil .

0
Mathieu Gemard