web-dev-qa-db-fra.com

Quelle est la différence entre l'infusion, le fil et le npm?

J'utilisais le react-native package que j'ai installé globalement avec npm. Maintenant, il dit à la première ligne après avoir exécuté la commande init. Le suivant:

Installing react-native from npm...
Consider installing yarn to make this faster: https://yarnpkg.com

Je vérifiais donc ce site Web et il me semblait intéressant, mais je ne sais pas exactement ce que ce serait. Au début, je pensais que j'aurais besoin de brew pour installer yarn, donc je pourrais filer pour installer npm. Mais maintenant, je pense que yarn est un remplacement de npm. Est-ce une affirmation correcte?

Pourquoi voudrais-je avoir autant de gestionnaires de paquets?

Je comprends qu'il est utile pour des logiciels comme Atom ou Visual Studio Code d'avoir leur propre gestionnaire de packages. Mais pour le développement, je ne vois pas la raison pour laquelle quelqu'un voudrait utiliser quatre gestionnaires de packages différents (brew pour "logiciel principal", yarn pour npm packages, npm pour les modules backend et bower pour bibliothèques frontales). Comment démêler cette forêt du gestionnaire de packages?

29
user007

Je ne connais pas le breuvage, mais je suppose que vous parlez du système de gestion de progiciels Homebrew pour macOS.

Le but de chaque système est alors:

  1. brew : installation de logiciels, c'est-à-dire prêts à consommer des applications comme wget.
  2. npm : installation de packages (bibliothèques), c'est-à-dire de fonctionnalités pour vous aider à créer vos propres applications.
  3. fil : également installation de packages.

Le fil présente certains avantages par rapport au npm, les deux principaux étant la vitesse et la prévisibilité. Yarn réutilise le fichier package.json de npm et ne change pas sa structure. Vous pouvez donc exécuter yarn install au lieu de npm install et théoriquement tout fonctionnera automatiquement.

P.S. Je suis d'accord, https://yarnpkg.com n'a pas assez d'informations sur les raisons pour lesquelles nous avons besoin d'un autre système de gestion de paquets, mais il y a un excellent article qui remplit cela écart.

27
Monsignor

fil vs npm

yarn et npm gèrent les installations et les dépendances des modules. Yarn a été conçu pour combler certaines des lacunes de npm.

Les plus grands avantages du fil par rapport au npm sont

  1. L'installation de packages avec du fil est parallélisée et l'installation des packages est donc plus rapide.
  2. package.json peut être très lâche en termes de numéros de version. yarn.lock (similaire à npm shirkwrap) verrouille cela afin que deux machines avec le même package.json installez toujours exactement les mêmes packages.

  3. yarn vous permet de vérifier pourquoi certains packages sont installés (comprendre l'arborescence des dépendances)

Réf: https://www.sitepoint.com/yarn-vs-npm/

4
priyankaavj

Yarn est un gestionnaire de packages JavaScript créé par Facebook, Google, Exponent et Tilde. Il est créé pour supprimer ou surmonter les fonctionnalités qui manquent dans npm. En comparaison avec npm, il a

  • Sécurité renforcée
  • Mode hors-ligne
  • Installation parallèle - Par conséquent, une installation plus rapide

Une autre différence majeure était le fichier yarn.lock , mais après npm ^5.x.x ils fournissent également le fichier package-lock.json .

Et les commandes de fil fonctionnent comme npm:

# Starting a new project
npm init === yarn init

# Installing all the dependencies of the project
npm install === yarn or yarn install

# Adding a dependency
npm install [package] === yarn add [package] # The package is saved to your package.json immediately.
npm install  [package]@[version] === yarn add [package]@[version]
npm install [package]@[tag] === yarn add [package]@[tag]

# Add a dev dependency
npm install [package] --save-dev === yarn add [package] --dev

# Upgrading a dependency
npm update [package] === yarn upgrade [package]
npm update [package]@[version] === yarn upgrade [package]@[version]
npm update [package]@[tag] === yarn upgrade [package]@[tag]

# Removing a dependency
npm uninstall [package] === yarn remove [package]

# View registry information
npm view [package] === yarn info [package]

# List installed packages
npm list === yarn list
npm list --depth === yarn list --depth=0

# Install packages globally
npm install -g [package] === yarn global addb [package]

# Run a defined package script
npm run [script] === yarn run [script]

Références

https://www.sitepoint.com/yarn-vs-npm/

https://scotch.io/@brian_kimo/npm-vs-yarn

et l'annonce officielle

https://code.facebook.com/posts/184007561954536

3
Sunil Garg

Yarn est, comme NPM , un gestionnaire de paquets pour Node.JS. Le fil est construit par Facebook. C'est plus rapide et a plus de fonctionnalités que NPM.

Leurs principaux arguments de vente sont:

  • Sécurité Avec yarn.lock fichier (similaire à NPM npm-shrinkwrap.json) toutes les dépendances sont verrouillées sur la version exacte. Donc, vous n'avez plus de difficultés "mais cela fonctionne sur ma machine". Tout le monde a les mêmes versions verrouillées yarn.lock fichier
  • Speed ​​Yarn utilise des proxys (rapides) et une mise en cache (hors ligne) pour livrer vos modules plus rapidement. Il dispose également d'un vérificateur de LICENCE, qui vérifie la licence de tous vos modules de dépendance.
1
MAULIK MODI