Cet article vous présentera les deux puissants gestionnaires de packages de Node.js : npm et Yarn. J'espère qu'il vous sera utile !

Cours d'introduction rapide à Node.js : participez pour apprendre
La première étape pour apprendre Node est de comprendre le gestionnaire de packages de Node : npm . Je pense que tout le monde connaît npm , car nous l'utilisons souvent pour télécharger certaines ressources de packages.
Mais comme la bibliothèque de ressources de npm (https://www.npmjs.com/) se trouve à l'étranger, la vitesse de téléchargement des ressources qui l'utilisent est relativement lente, de sorte que node包管理器tiers tels que yarn et nationaux sont synchronisés avec npm entrepôts. Mise à jour du miroir Taobao (cnpm).
Ensuite, nous apprendrons ces contenus en profondeur, commençons !
La rubrique de la série Node a commencé à être mise à jour. Suivez le blogueur, abonnez-vous à la rubrique et apprenez Node sans vous perdre !
qu'est-ce que npm
Avant d'utiliser npm , vous devez d'abord comprendre ce qu'est npm . Dans le premier article de la colonne de la série Node [Node.js | Le seul moyen du front-end à la pile complète], il est mentionné npm est l'entrepôt open source de Node et est le plus grand entrepôt open source au monde.
L'adresse de cet entrepôt est : https://www.npmjs.com/
Au 17 mars 2020, npm proposait 1,3 million de packages à environ 12 millions de développeurs, qui les téléchargeaient 75 milliards de fois par mois.
Pour télécharger et utiliser les ressources de l'entrepôt npm , vous pouvez utiliser npm的指令(en commençant par npm , telles que npm i axios download axios ) ou utiliser d'autres instructions tierces ( Node包管理器tiers ), telles que fil, etc. .
Déclaration officielle :
npmest un outil de gestion et de distribution de packages pourNodeJSLa gestion des packages se reflète dans le fait qu'il s'agit d'un entrepôt
NodeJS, qui stocke et gère divers packages logicielsNodeJS.L'outil de distribution consiste à utiliser
npm的指令pour télécharger des packages dans l'entrepôtnpm.
Lorsque nous configurons l'environnement NodeJS , npm指令模块est installé avec NodeJS . Nous pouvons exécuter npm -v via le terminal pour afficher la version installée :

Mais si la version de npm installée par défaut est trop ancienne, vous pouvez également installer et mettre à jour manuellement npm vous-même :
npm je npm@latest -g
@latestreprésente l'installation de la dernière version,-greprésente l'installation globale, ces instructionsnpmseront discutées plus tard.
Une chose magique peut être trouvée ci-dessus. Nous installons npm via npm . Pouvons-nous l'installer nous-mêmes ?
C'est en fait facile à comprendre. npm的指令模块npm également stocké dans l'entrepôt npm en tant que package, et le nom de ce package est npm .

Donc ce que nous appelons généralement npm fait simplement référence au module de commande de npm (le package nommé npm)
Mais en fait, le mot
npmfait référencenpm指令模块, et fait également référence ànpml'entrepôt open sourceNodeJSlui-même, donc on téléchargenpmdansnpm(ce npm représente l'entrepôt open source de NodeJS) (ce npm représente l'open source entrepôt source nommé npm Ce package, ce package est le module de commande de npm)
commandes communes npm
Il existe de nombreuses instructions
npm. Nous répertorions ici uniquement celles couramment utilisées. Pour plus d'informations, veuillez consulter la documentation officielle de npm.
: générer
npm initpackage.json
npm install : Téléchargez toutes les ressources enregistrées dans package.json
npm install 包名 : Téléchargez le package spécifié dans le répertoire actuel
npm uninstall 包名 : désinstallez le package spécifié dans le répertoire courant
npm update 包名: Mettez à jour le package spécifié dans le répertoire actuel. Si aucun nom de package n'est ajouté, tous les packages du répertoire actuel seront mis à jour.
npm outdated 包名: Vérifiez si le package spécifié dans le répertoire actuel est obsolète . Si aucun nom de package n'est ajouté, tous les packages du répertoire actuel seront vérifiés.
npm info 包名 : Obtenez des informations détaillées sur le package dans le répertoire actuel
npm list : affichez tous les packages installés dans le répertoire actuel et leurs dépendances et affichez le numéro de version ( list peut être abrégée en ls )
npm list 包名 : affichez le numéro de version du package spécifié installé dans le répertoire actuel ( list peut être abrégée en ls )
Quelques points supplémentaires :
install peut être abrégé en i , tel que : npm install axios peut être abrégé en npm i axios
uninstall peut être abrégée en un
Ajoutez le symbole @ après le nom du package pour spécifier la version du package, par exemple : npm i md5@1 télécharge la version 1 de md5, npm i md5@latest signifie télécharger la dernière version de md5.
suffixe de commande npm
-g : Spécifiez l'environnement global
La commande
npmfonctionne par défaut dans le répertoire actuel. L'ajout-gspécifie le fonctionnement dans l'environnement global . Comme mentionné ci-dessus, installez la dernière version de npm globalement :npm i npm@latest -g, afin que npm puisse être utilisé dans n'importe quel répertoire. .
--save peut être abrégé en -s : spécifie les dépendances dans l'environnement de production (enregistrées dans dependencies )
Après la version
npm5, la valeur par défaut est--save. Par exemple, axios doit être installé à la fois dans l'environnement de production et dans l'environnement de développement :npm i axios -s
--save-dev peut être abrégé en -D : spécifie les dépendances dans l'environnement de développement (enregistrées dans devDependencies )
Pour installer Babel qui n'est pas nécessaire dans l'environnement de production (utilisé uniquement dans l'environnement de développement) :
npm i babel -D
--save-prod peut être abrégé en -P : identique à --save
--save-optional peut être abrégé en -O : spécifie les dépendances facultatives (enregistrées dans optionalDependencies )
--no-save : ne sera pas enregistré dans package.json
Pour les fonctions spécifiques et les différences de
-g,--save,--save-devveuillez consulter mon article : La différence entre npm install -g/–save/–save-dev
Le suffixe de la commande npm peut également être placé devant le nom du package :
npm i -g npm@latest
Gestion des packages de dépendances
Dans npm , les dépendances bien connues sont : dependencies et devDependencies
De plus, il comprend effectivement :
peerDependencies ,
optionalDependencies
bundledDependencies / bundleDependencies
Plusieurs dépendances, dont celles-ci, sont enregistrées dans package.json :

Ci-dessus, nous avons mentionné ces dépendances en parlant des suffixes de commande npm . Voici une description détaillée de ce qu'elles représentent :
dependencies et devDependencies
Consultez mon autre article : La différence entre npm install -g/–save/–save-dev
peerDependencies
Vous pouvez consulter l'article du grand gars : Comprendre les dépendances entre pairs dans un seul article
optionalDependencies
Dépendances
optionalDependencies. S'il existe des packages dépendants quidependenciestoujours s'exécuter même si l'installation échoue ou si vous souhaitez que npm continue de s'exécuter, vous pouvez utiliseroptionalDependencies. écrivez-les aux deux endroits.
bundledDependencies / bundleDependencies
Dépendances d'empaquetage,
bundledDependenciesest un objet tableau contenant les noms de packages dépendants. Lors de la publication, les packages de cet objet seront empaquetés dans le package de la version finale. Les packages du tableau doivent d'abord être déclarés dansdevDependenciesoudependencies, sinon l'empaquetage signalera un. erreur.
Problèmes de version du package nécessitant une attention particulière dans package.json
Les informations de version de tous les packages téléchargés via npm seront enregistrées dans package.json
Lors de l'exécution npm i il sera téléchargé en fonction des informations du package enregistrées dans package.json . Ses règles de téléchargement sont les suivantes :
Lorsque la version du package commence par ^ (par défaut) , la grande version sera verrouillée
// package.json
"dépendances": {
"md5": "^2.1.0" // } commençant par ^,Grâce à
npm ila dernière version demd52.xx(la dernière version sous les deux versions majeures) sera installée, qui n'est pas nécessairement la 2.1.0, mais peut aussi être la 2.3.0
Lorsque la version du package commence par ~ , elle sera verrouillée sur la deuxième version majeure
// package.json
"dépendances": {
"md5": "~2.1.0"
},Grâce à
npm ij'installerai la dernière version demd52.1.x(la dernière version sous la version 2.1), qui n'est pas nécessairement la 2.1.0, mais peut aussi être la 2.1.1
La version du package est * et sera verrouillée sur la dernière version
// package.json
"dépendances": {
"md5": "*"
},Via
npm ij'installerai la dernière version demd5
S'il n'y a pas de préfixe avant la version du package , il sera verrouillé sur la version spécifiée.
// package.json
"dépendances": {
"md5": "2.1.0"
},Via
npm ivais installer la version 2.1.0 demd5
Résoudre le problème de la vitesse lente de NPM
Étant donné que l'entrepôt npm est à l'étranger, il nous sera plus lent d'utiliser la commande npm en Chine pour télécharger le contenu de cet entrepôt étranger.
À ce stade, nous pouvons exécuter la commande suivante pour basculer la source de l'entrepôt npm vers la source de l'image Taobao nationale (cnpm) :
registre de jeu de configuration npm https://registry.npmmirror.com
Utilisez npm config get registry pour afficher la source actuelle :

Lorsque vous utiliserez npm à l'avenir, il sera automatiquement téléchargé depuis l'entrepôt miroir national Taobao et la vitesse sera très rapide.
L'adresse source précédente du miroir Taobao était http://registry.npm.taobao.org, mais elle a maintenant été modifiée en http://registry.npmmirror.com Voir les détails.
Mais il nous sera inévitablement un peu gênant de changer de source en modifiant la configuration npm . Nous pouvons installer un nrm globalement pour nous aider à changer rapidement de source npm .
Utilisez nrm pour changer rapidement de source npm
Installez nrm globalement :
npm installer -g nrm
Exécutez nrm ls pour afficher les sources npm commutables :

Utilisez npm use pour changer de source , comme passer à la source Taobao : nrm use taobao

Utilisez nrm test 源名pour tester le temps de réponse de la source correspondante :

Vous pouvez voir que la vitesse de réponse de la source Taobao est beaucoup plus rapide que la source par défaut de npm .
Miroir npm chinois : cnpm
cnpm est un miroir npmjs.org complet , qui peut être utilisé à la place de la version officielle
La fréquence de synchronisation entre
cnpmet la version officielle est d'une fois toutes les 10 minutes, site officiel du cnpm
Télécharger cnpm :
npm install -g cnpm --registry=https://registry.npmmirror.com
cnpm est le miroir Taobao . Lorsque nous utilisons la source du miroir Taobao ci-dessus, nous changeons simplement la source de npm en la source du miroir Taobao ( cnpm ) (cette source fait en fait référence à l'adresse de l'entrepôt), puis l'utilisons via la commande npm .
Et voici pour télécharger directement l'image complète de cnpm , et vous pourrez ensuite utiliser cnpm au lieu de la commande npm :
cnpm installcnpm dans axios -g //....
Les instructions de
cnpmsont exactement les mêmes que celles denpm. Utilisez simplement cnpm au lieu de npm lorsque vous l'utilisez.
Yarn est un outil de gestion des dépendances publié par Facebook qui est plus rapide et plus efficace que npm
Installer:
npm install -g fil
Mettre à jour le fil :
dernière version du jeu de fils version du jeu de fils à partir des sources
avantage
super rapide
yarn met en cache chaque package téléchargé, il n'est donc pas nécessaire de le télécharger à nouveau lors de sa nouvelle utilisation. Utilise également des téléchargements parallèles pour maximiser l'utilisation des ressources, de sorte que les installations sont plus rapides
Super sécurisé <br/> Avant d'exécuter le code, yarn vérifiera l'intégrité de chaque package d'installation via un algorithme
Instructions communes pour le fil

yarn init : initialisez le projet et générez le fichier package.json . Les étapes de génération sont à peu près les mêmes que celles npm init
yarn help : afficher la liste des commandes
yarn install : Téléchargez toutes les ressources enregistrées dans package.json , qui peut être abrégé en yarn
yarn add 包名 : téléchargez le package spécifié dans le répertoire actuel
yarn remove 包名: désinstallez le package spécifié dans le répertoire courant
yarn upgrade 包名: Mettez à jour le package spécifié dans le répertoire actuel. Vous pouvez ajouter @指定版本号après le nom du package pour spécifier la version qui doit être mise à jour.
suffixe de commande yarn
--dev : Spécifiez les dépendances dans l'environnement de développement ( devDependencies ), abrégées en -D
--peer : Spécifiez les dépendances principales ( peerDependencies )
--optional : spécifiez les dépendances facultatives ( optionalDependencies )
Cet article présente npm et yarn , ainsi que nrm , cnpm , etc. dérivés de npm
Les blogueurs utilisent une combinaison de npm + nrm pour changer de source , car cela garantit non seulement une vitesse rapide, mais permet également un changement de source pratique sans avoir à télécharger des packages supplémentaires tels que cnpm et yarn
npm et yarn ont tous deux beaucoup de contenu. Cet article explique uniquement le contenu le plus couramment utilisé. Si vous souhaitez en savoir plus, vous pouvez vous rendre sur le site officiel correspondant pour le consulter.