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?
Depuis la version 5, npm
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),--save
est maintenant impliqué pour npm i
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
.
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:
Vous savez toujours que vous obtenez la même chose sur chaque machine de développement
Il parallèle les opérations que npm
ne fait pas, et
Il utilise plus efficacement le réseau.
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.
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.
“ NPM vs Fil Cheat Sheet ” par Gant Laborde
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.
- 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. ????
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?
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)
pour plus de détails, visitez https://www.npmjs.com/package/pnpm
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/
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 .