Este artículo lo guiará a través de los dos poderosos administradores de paquetes de Node.js: npm y Yarn. ¡Espero que le resulte útil!

Curso de introducción rápida a Node.js: entra para aprender
El primer paso para aprender Node es comprender el administrador de paquetes de node : npm . Creo que todos están familiarizados con npm , porque a menudo lo usamos para descargar algunos recursos de paquetes.
Pero debido a que la biblioteca de recursos de npm (https://www.npmjs.com/) está en el extranjero, la velocidad de descarga de recursos que la utiliza es relativamente lenta, por lo que node包管理器de terceros, como los yarn y los nacionales, se sincronizan con npm almacenes Espejo Taobao actualizado (cnpm)
A continuación aprenderemos estos contenidos en profundidad, ¡comencemos!
La columna de la serie Node ha comenzado a actualizarse. ¡Sigue al blogger, suscríbete a la columna y aprende Node sin perderte!
¿Qué es NPM?
Antes de usar npm , primero debe comprender qué es npm . En el primer artículo de la columna de la serie Node [Node.js | La única forma desde el front-end hasta la pila completa], se menciona npm es el almacén de código abierto de Node y es el almacén de código abierto más grande del mundo.
La dirección de este almacén es: https://www.npmjs.com/
Al 17 de marzo de 2020, npm entregó 1,3 millones de paquetes a aproximadamente 12 millones de desarrolladores, quienes los descargaron 75 mil millones de veces al mes.
Para descargar y usar los recursos en el almacén npm , puede usar npm的指令(comenzando con npm , como npm i axios download axios ) o usar otras instrucciones de terceros ( Node包管理器de terceros), como hilo, etc. .
Declaración oficial:
npmes una herramienta de distribución y gestión de paquetes paraNodeJSLa gestión de paquetes se refleja en el hecho de que es un almacén
NodeJS, que almacena y gestiona varios paquetes de softwareNodeJS.La herramienta de distribución se materializa mediante el uso de
npm的指令para descargar paquetes en el almacénnpm.
Cuando configuramos el entorno NodeJS , npm指令模块se instala junto con NodeJS . Podemos ejecutar npm -v a través de la terminal para ver la versión instalada:

Pero si la versión npm instalada por defecto es demasiado antigua, también puedes instalar y actualizar npm manualmente :
npm i npm@latest -g
@latestrepresenta la instalación de la última versión,-grepresenta la instalación global; estas instruccionesnpmse analizarán más adelante.
Algo mágico se puede encontrar arriba. Estamos instalando npm a través de npm . ¿Podemos instalarlo nosotros mismos?
En realidad, esto es fácil de entender. npm的指令模块también se almacena en el almacén npm como un paquete, y el nombre de este paquete es npm . Consulte la dirección de npm .

Entonces, lo que generalmente llamamos npm solo se refiere al módulo de comando de npm (el paquete llamado npm)
Pero, de hecho, la palabra
npmse refierenpm指令模块y también se refiere anpmel almacén de código abiertoNodeJSen sí, por lo que descargamosnpmennpm(este npm representa el almacén de código abierto de NodeJS) (este npm representa el almacén abierto almacén fuente llamado npm Este paquete, este paquete es el módulo de comando de npm)
comandos comunes de npm
Hay muchas instrucciones
npm. Aquí solo enumeramos las más utilizadas. Para obtener más información, consulte la documentación oficial de npm.
: genera
npm initpackage.json
npm install : descarga todos los recursos registrados en package.json
npm install 包名: descargue el paquete especificado en el directorio actual
npm uninstall 包名: desinstale el paquete especificado en el directorio actual
npm update 包名: actualiza el paquete especificado en el directorio actual. Si no se agrega ningún nombre de paquete, se actualizarán todos los paquetes en el directorio actual.
npm outdated 包名: verifique si el paquete especificado en el directorio actual está desactualizado . Si no se agrega ningún nombre de paquete, se verificarán todos los paquetes en el directorio actual.
npm info 包名: obtenga información detallada sobre el paquete en el directorio actual
npm list : ve todos los paquetes instalados en el directorio actual y sus dependencias y muestra el número de versión ( list se puede abreviar como ls )
npm list 包名: vea el número de versión del paquete especificado instalado en el directorio actual ( list se puede abreviar como ls )
Algunos puntos adicionales:
install se puede abreviar como i , como por ejemplo: npm install axios se puede abreviar como npm i axios
uninstall se puede abreviar como un
Agregue el símbolo @ después del nombre del paquete para especificar la versión del paquete, como por ejemplo: npm i md5@1 descarga la versión 1 de md5, npm i md5@latest significa descargar la última versión de md5
sufijo de comando npm
-g : especifica el entorno global
El comando
npmfunciona de forma predeterminada en el directorio actual. Agregar-gespecifica el funcionamiento en el entorno global . Como se mencionó anteriormente, instale la última versión de npm globalmente:npm i npm@latest -g, para que npm se pueda usar en cualquier directorio. .
--save se puede abreviar como -s : especifica las dependencias en el entorno de producción (registradas en dependencies )
Después de la versión
npm5, el valor predeterminado es--save. Por ejemplo, axios debe instalarse tanto en el entorno de producción como en el de desarrollo:npm i axios -s
--save-dev se puede abreviar como -D : especifica las dependencias en el entorno de desarrollo (registradas en devDependencies )
Para instalar babel que no es necesario en el entorno de producción (solo se usa en el entorno de desarrollo):
npm i babel -D
--save-prod se puede abreviar como -P : igual que --save
--save-optional se puede abreviar como -O : especifica dependencias opcionales (registradas en optionalDependencies )
--no-save : no se registrará en package.json
Para conocer las funciones específicas y las diferencias de
-g,--save,--save-devconsulte mi artículo: La diferencia entre npm install -g/–save/–save-dev
El sufijo del comando npm también se puede colocar delante del nombre del paquete:
npm i -g npm@latest
Gestión de paquetes de dependencia
En npm , las dependencias más conocidas son: dependencies y devDependencies
Además, en realidad incluye:
peerDependencies ,
optionalDependencies
bundledDependencies / bundleDependencies
Varias dependencias, incluidas éstas, se registran en package.json :

Arriba mencionamos estas dependencias cuando hablamos de los sufijos de comandos npm . Aquí hay una descripción detallada de lo que representan:
dependencies y devDependencies
Consulte mi otro artículo: La diferencia entre npm install -g/–save/–save-dev
peerDependencies
Puede consultar el artículo del grandullón: Comprender las dependencias entre pares en un artículo
optionalDependencies
Dependencias opcionales. Si hay algunos paquetes dependientes que aún se pueden ejecutar incluso si la instalación falla o desea que npm continúe ejecutándose, puede usar
optionalDependencies. Además,optionalDependenciessobrescribirá las dependencias con el mismo nombre endependencies. escríbalos en ambos lugares.
bundledDependencies / bundleDependencies
Empaquetado de dependencias,
bundledDependencieses un objeto de matriz que contiene nombres de paquetes dependientes. Al publicar, los paquetes en este objeto se empaquetarán en el paquete de lanzamiento final. Los paquetes en la matriz primero deben declararse endevDependenciesodependencies; de lo contrario, el paquete informará un. error.
Problemas de versión del paquete que requieren atención en package.json
La información de la versión de todos los paquetes descargados a través de npm se registrará en package.json
Al ejecutar npm i se descargará según la información del paquete registrada en package.json . Sus reglas de descarga son las siguientes:
Cuando la versión del paquete comienza con ^ (predeterminado) , la versión grande se bloqueará
// paquete.json
"dependencias": {
"md5": "^2.1.0" // } comenzando con ^,A través de
npm ise instalará la última versión demd52.xx(la última versión de las dos versiones principales), que no es necesariamente 2.1.0, pero también puede ser 2.3.0.
Cuando la versión del paquete comience con ~ , se bloqueará en la segunda versión principal.
// paquete.json
"dependencias": {
"md5": "~2.1.0"
},A través de
npm ila última versión demd52.1.x(la última versión bajo la versión 2.1), que no es necesariamente 2.1.0, pero también puede ser 2.1.1.
La versión del paquete es * y estará bloqueada en la última versión.
// paquete.json
"dependencias": {
"md5": "*"
},A través de
npm iinstalaré la última versión demd5
Si no hay ningún prefijo antes de la versión del paquete , se bloqueará en la versión especificada.
// paquete.json
"dependencias": {
"md5": "2.1.0"
},A través de
npm iinstalaré la versión 2.1.0 demd5
Resuelva el problema de la velocidad lenta de npm
Debido a que el almacén npm está en el extranjero, nos resultará más lento utilizar el comando npm en China para descargar el contenido de este almacén extranjero.
En este momento, podemos ejecutar el siguiente comando para cambiar la fuente del almacén npm a la fuente de la imagen nacional de Taobao (cnpm) :
Registro del conjunto de configuración de npm https://registry.npmmirror.com
Utilice npm config get registry para ver la fuente actual:

Cuando utilice npm en el futuro, se descargará automáticamente desde el almacén espejo nacional de Taobao y la velocidad será muy rápida.
La dirección de origen anterior del espejo de Taobao era http://registry.npm.taobao.org, pero ahora se ha cambiado a http://registry.npmmirror.com Ver detalles.
Pero inevitablemente será un poco problemático para nosotros cambiar de fuente modificando la configuración npm . Podemos instalar un nrm globalmente para ayudarnos a cambiar rápidamente de fuente npm .
Utilice nrm para cambiar rápidamente las fuentes de npm
Instale nrm globalmente:
instalación npm -g nrm
Ejecute nrm ls para ver fuentes npm conmutables :

Utilice npm use para cambiar de fuente , como cambiar a la fuente de Taobao: nrm use taobao

Utilice nrm test 源名para probar el tiempo de respuesta de la fuente correspondiente:

Puede ver que la velocidad de respuesta de la fuente Taobao es mucho más rápida que la fuente predeterminada de npm .
Espejo npm chino: cnpm
cnpm es un espejo completo de npmjs.org, que se puede usar en lugar de la versión oficial
La frecuencia de sincronización entre
cnpmy la versión oficial es una vez cada 10 minutos, sitio web oficial de cnpm
Descargar cnpm :
instalación npm -g cnpm --registry=https://registry.npmmirror.com
cnpm es el espejo de Taobao . Cuando usamos la fuente del espejo de Taobao anterior, simplemente cambiamos la fuente de npm a la fuente del espejo de Taobao ( cnpm ) (esta fuente en realidad se refiere a la dirección del almacén) y luego la usamos. el comando npm .
Y aquí es para descargar directamente la imagen completa de cnpm , y luego puedes usar cnpm en lugar del comando npm :
instalación de cnpmcnpm en axios -g // ....
Las instrucciones de
cnpmson exactamente las mismas que las denpm. Solo use cnpm en lugar de npm cuando lo use.
Yarn es una herramienta de gestión de dependencias lanzada por Facebook que es más rápida y eficiente que npm
Instalar:
instalación npm -g hilo
Actualizar hilo:
versión del juego de hilos más reciente versión del juego de hilos de fuentes
ventaja
súper rápido
yarn almacena en caché cada paquete descargado, por lo que no es necesario descargarlo nuevamente cuando lo use nuevamente. También utiliza descargas paralelas para maximizar la utilización de recursos, por lo que las instalaciones son más rápidas.
Súper seguro <br/> Antes de ejecutar el código, yarn verificará la integridad de cada paquete de instalación a través de un algoritmo.
Instrucciones comunes de hilo

yarn init : inicializa el proyecto y genera el archivo package.json . Los pasos de generación son aproximadamente los mismos que los npm init
yarn help : mostrar lista de comandos
yarn install : descargue todos los recursos registrados en package.json , que puede abreviarse como yarn
yarn add 包名: descargue el paquete especificado al directorio actual
yarn remove 包名: desinstale el paquete especificado en el directorio actual
yarn upgrade 包名: actualice el paquete especificado en el directorio actual. Puede agregar @指定版本号después del nombre del paquete para especificar la versión que debe actualizarse.
sufijo de comando yarn
--dev : especifica dependencias en el entorno de desarrollo ( devDependencies ), abreviado como -D
--peer : especifica las dependencias principales ( peerDependencies )
--optional : especifica dependencias opcionales ( optionalDependencies )
Este artículo presenta npm y yarn , así como nrm , cnpm , etc. derivados de npm.
Los bloggers han estado usando una combinación de npm + nrm para cambiar de fuente , porque esto no solo garantiza una velocidad rápida, sino que también permite un cambio de fuente conveniente sin tener que descargar paquetes adicionales como cnpm y yarn
Tanto npm como yarn tienen mucho contenido. Este artículo solo explica el contenido más utilizado. Si desea obtener más información, puede visitar el sitio web oficial correspondiente.