Je veux demander quel est votre gestionnaire de paquets préféré pour JS? J'ai vu des articles sur le fil et NPM. Mais je ne suis pas sûr de ce qui peut être meilleur pour moi. Je viens de commencer à apprendre JS.
En ce moment, la différence entre fil et npm est pour moi comme différence entre les marques de cola.
Parfois, nous n'avions que npm
, mais la résolution des dépendances et la mise en cache posaient tant de problèmes qu'un autre outil est né (yarn
). En règle générale, il utilisait le cache local pour résoudre les dépendances. Il était par exemple crucial d’exécuter des travaux CI qui sont presque toujours exécutés dans le même environnement, et une bande passante élevée coûte cher en payant les données dans les services cloud. Cela signifie que dans les anciennes versions npm
, lorsque vous exécutiez npm install
Et que vous disposiez de dépôts
S'il vous plaît, comprenez que yarn
a été construit sur le dessus de paquets npm
et https://www.npmjs.com/ , ce qui signifie qu'ils utilisent tous deux NPM
registre pour résoudre les paquets. donc si vous exécutez npm install [email protected].
ou yarn add [email protected].
vous obtiendrez le même résultat
[email protected]
Sur chaque nouvelle construction, les deux dépendances ont été à nouveau téléchargées sur Internet. Yarn utilise yarn.lock
En dessous et compare votre fichier package.json
À yarn.lock
Et détermine les packages à extraire pour installer uniquement de manière dépendante de nouvelles dépendances.
yarn
offre une installation parallèle de paquets qui ne dépendent pas des threads. Cela peut réduire le temps d'installation à 1/10 du temps à partir de npm install
Comme indiqué précédemment, yarn
génère yarn.lock
Après chaque installation, ce qui maintient TOUTES les versions des packages installés (comme vous le savez probablement, un package peut avoir des dépendances et une dépendance peut aussi avoir ses propres dépendances) afin de pouvoir construire up infinie arbre de dépendances qui peut conduire à de très mauvais conflits. Imaginons ce scénario
- lodash^1
- [email protected]
- - [email protected]
- [email protected]
- - [email protected]
Imaginez un scénario lorsque le responsable de another_module
Décide de remplacer lodash par une version de modification 1.2.0
, Ce qui peut arriver est que npm
pouvait récupérer 2 instances différentes de la même bibliothèque et 2 version différente qui pourrait conduire à un comportement extrêmement étrange. Parce que vous n'avez pas le verrou exact dans votre module (vous acceptez n'importe quelle version semver ^ 1.xx et ^ 2.xx, cela signifie donc que les deux sous-modules satisferont vos exigences, mais vous obtiendrez une version différente. Le fil bloquera votre yarn.lock
AT LE TEMPS D'AJOUTER un nouveau package au projet, cela signifie que lorsque les autres développeurs de votre projet extrairont le projet, il aura également les mêmes yarn.lock
Et yarn
finira par "imiter" l'état du paquet de la façon dont ils ont été installés lorsque vous avez validé yarn.lock
Sur d'autres mains NPM
se contente de la satisfaction de semver et peut récupérer 2 versions différentes pour 2 développeurs ( en supposant que les paquets sont en train de se mettre à jour)
Il y a eu beaucoup de travail de npm
comme ils ont publié npm@5
Et je pense que toutes les déclarations sont maintenant des raisons pour lesquelles yarn
a été créé et quels problèmes cela a été résolu au début mais je pense qu’à la date actuelle, il n’ya pas de grande différence entre ces 2