Quelles sont les différences entre Yarn et NPM? Au moment de la rédaction de cette question, je ne peux trouver que quelques articles sur Internet montrant quel est l'équivalent Yarn d'une commande NPM comme celle-ci .
Ont-ils les mêmes fonctionnalités (je sais que Yarn fait la mise en cache locale et semble que vous n'avez besoin de télécharger un package qu'une seule fois), mais à part cela, y a-t-il des avantages à passer de NPM à Yarn?
javascript
npm
yarnpkg
Asha
la source
la source
Réponses:
MISE À JOUR: mars 2018 (un peu tard ...)
Depuis la version 5,
npm
package-lock.json
qui corrige l'intégralité de votre arbre de dépendances de la même manière que le mécanisme de verrouillage de fil (ou tout autre),--save
est maintenant implicite pournpm i
npm 5.7.0 a en outre introduit la
npm ci
commande pour installer les dépendances plus rapidement dans un environnement d'intégration continue en installant uniquement les packages trouvés danspackage-lock.json
(signalant une erreur si lespackage-lock.json
etpackage.json
ne sont pas synchronisés).Personnellement , je l'utilise toujours
npm
.Original
Je répugne à citer directement des documents, mais ils font un excellent travail pour expliquer pourquoi, de manière suffisamment concise pour que je ne vois pas comment résumer davantage les idées.
En grande partie:
Vous savez toujours que vous obtenez la même chose sur chaque machine de développement
Il paralellise les opérations qui
npm
ne le font pas, etIl permet une utilisation plus efficace du réseau.
Il peut également utiliser plus efficacement d'autres ressources système (telles que la RAM) .
Quelles sont les expériences de production des gens avec? Qui sait, c'est un bébé pour le grand public.
TL; DR de Yehuda Katz :
Bel article de blog
« Aide-mémoire NPM vs Yarn » par Gant Laborde
Version légèrement plus longue du projet :
Et depuis le README.md :
la source
--flat
option qui force une véritable structure plate où une seule version de chaque dépendance est autorisée à être installée, mais quel est le comportement par défaut à ce sujet? Merci.install -g
.npm :
Fil :
la source
Qu'est-ce que PNPM?
pnpm
utilise des liens physiques et des liens symboliques pour enregistrer une seule 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é en un seul endroit sur le disque et un lien dur le placera dans les node_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 PNPM?
Comment installer le package npm en utilisant PNPM?
Avantages de
PNPM
plusYarn
etNPM
Voici la barre de progression montrant le temps d'installation pris par
NPM
,YARN
etPNPM
(une barre plus courte est meilleure)Cliquez pour vérifier le Benchmark complet
pour plus de détails, visitez https://www.npmjs.com/package/pnpm
la source
Lorsque vous installez un package en utilisant Yarn (en utilisant yarn add packagename), il place le package sur votre disque . Lors de la prochaine installation, ce package sera utilisé au lieu d'envoyer une requête HTTP pour obtenir l'archive tar du registre.
Yarn est livré avec un vérificateur de licence pratique , qui peut devenir très puissant au cas où vous deviez 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/
la source
Essayer de donner une meilleure vue d'ensemble pour les débutants.
npm a été historiquement (2010) le gestionnaire de packages 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:
Cela générera un
package.json
fichier. Il contient toutes les dépendances du projet.ensuite
créerait un répertoire
node_modules
et téléchargerait les dépendances (que vous avez ajoutées aupackage.json
fichier) à l'intérieur.Cela créera également un
package-lock.json
fichier. Ce fichier est utilisé pour décrire l'arborescence des dépendances qui a été générée. Il 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 procédant directement à la mise à niveau 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
node_modules
répertoire différent entraînant des 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 dans lequel l'exécution de sudo npm sur les systèmes Linux changerait la propriété des fichiers système, brisant définitivement le système d'exploitation.Pour résoudre ces problèmes et bien d'autres, Facebook a introduit un nouveau gestionnaire de packages (2016): Yarn un gestionnaire de packages plus rapide, plus sécurisé et plus fiable pour JavaScript.
Vous pouvez ajouter Yarn à un projet en tapant:
yarn init
Cela créera un
package.json
fichier. 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 lepackage-lock.json
mais est plutôt construit à l'aide d'un algorithme déterministe et fiable conduisant ainsi à des constructions cohérentes.Si vous avez démarré un projet avec npm , vous pouvez en fait migrer facilement vers Yarn . le fil consommera la même chose
package.json
. Voir Migrer depuis npm pour plus de détails.Cependant, npm a été amélioré à chaque nouvelle version et certains projets utilisent toujours npm sur fil .
la source
La réponse de @msanford couvre presque tout, cependant, il me manque la partie sécurité (vulnérabilités connues de l'OWASP).
Fil
Vous pouvez les vérifier à l'aide
yarn audit
, cependant, vous ne pouvez pas les corriger. C'est toujours un problème ouvert sur un GitHub ( https://github.com/yarnpkg/yarn/issues/7075 ).npm
Vous pouvez utiliser
npm audit fix
, donc certains d'entre eux peuvent être résolus vous-même.Les deux, c'est-à-dire
npm audit
&yarn audit
ont leurs propres outils d'intégration continue. Ce sont respectivement https://github.com/IBM/audit-ci (utilisé, fonctionne très bien!) Et https://yarnpkg.com/package/audit-ci (non utilisé).la source