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:
npm
es una herramienta de distribución y gestión de paquetes paraNodeJS
La 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
@latest
representa la instalación de la última versión,-g
representa la instalación global; estas instruccionesnpm
se 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
npm
se refierenpm指令模块
y también se refiere anpm
el almacén de código abiertoNodeJS
en sí, por lo que descargamosnpm
ennpm
(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.
npm init
: genera package.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
npm
funciona de forma predeterminada en el directorio actual. Agregar-g
especifica 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-dev
consulte 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,optionalDependencies
sobrescribirá las dependencias con el mismo nombre endependencies
. escríbalos en ambos lugares.
bundledDependencies
/ bundleDependencies
Empaquetado de dependencias,
bundledDependencies
es 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 endevDependencies
odependencies
; 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 i
se instalará la última versión demd5
2.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 i
la última versión demd5
2.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 i
instalaré 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 i
instalaré 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
cnpm
y 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
cnpm
son 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.