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 :
npm
est un outil de gestion et de distribution de packages pourNodeJS
La 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
@latest
représente l'installation de la dernière version,-g
représente l'installation globale, ces instructionsnpm
seront 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
npm
fait référencenpm指令模块
, et fait également référence ànpm
l'entrepôt open sourceNodeJS
lui-même, donc on téléchargenpm
dansnpm
(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.
npm init
: générer package.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
npm
fonctionne par défaut dans le répertoire actuel. L'ajout-g
spé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-dev
veuillez 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 quidependencies
toujours 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,
bundledDependencies
est 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 dansdevDependencies
oudependencies
, 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 i
la dernière version demd5
2.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 i
j'installerai la dernière version demd5
2.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 i
j'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 i
vais 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
cnpm
et 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
cnpm
sont 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é
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.