La diferencia entre pnpm, npm e hilo

Como programador front-end, debe estar familiarizado npmcon yarnestos dos administradores de paquetes, entonces, ¿ha oído hablar de pnpm? ¿Qué es? ¿Cuál es la diferencia entre npm e hilo y cuál es su función? Este artículo resolverá los siguientes problemas:

  1. pnpm¿Qué es? cual es el efecto
  2. pnpm¿Cuáles son las ventajas y características?
  3. pnpmnpm¿Cuál es la diferencia entre y yarn?
  4. pnpmCómo instalar y usar

1.¿Qué es pnpm? 

Herramienta de gestión de paquetes rápida y que ahorra espacio en disco

En pnpmla introducción, podemos ver que en realidad es una herramienta de administración de paquetes y su función es la npmmisma yarnque . Entonces, dado que la función es la misma, ¿por qué hay otra pnpm? De la documentación oficial podemos ver que sus ventajas son:

  • La instalación del paquete es extremadamente rápida.
  • Utilización eficiente del espacio en disco

 2. pnpm¿Cuáles son las ventajas y características?

Mencionamos anteriormente que las ventajas de pnpm son la instalación de paquetes extremadamente rápida y la utilización eficiente del espacio en disco .

La instalación del paquete es extremadamente rápida.

Es dos veces más rápido que la solución tradicional para instalar paquetes. Los siguientes son los puntos de referencia oficiales (comparando npm, pnpm, Yarn Classic y Yarn PnP). En una variedad de situaciones comunes, se compara la velocidad de ejecución de la instalación.

¿Por qué pnpm es más rápido que otros procesadores de paquetes?

Principalmente gracias a su mecanismo de gestión de paquetes, ahorra espacio en disco y mejora la velocidad de instalación (es decir, la segunda ventaja)

 Utilización eficiente del espacio en disco

El diseño de pnpm  node_modules utiliza enlaces simbólicos para crear una estructura anidada de dependencias. node_modules Cada archivo de cada paquete es un vínculo físico desde el almacenamiento direccionable por contenido.

Entonces, ¿por qué se dice que pnpm 基于内容寻址es más eficiente a la hora de utilizar el espacio en disco?

  • El mismo paquete no se instalará repetidamente. Al usarlo npm/yarn , si hay 100 dependencias de paquetes express , entonces se puede instalar 100 veces express y esta parte del código se escribirá en 100 lugares del disco. Pero pnpmesta parte del código solo se escribirá en un lugar y los enlaces físicos se utilizarán directamente para su uso posterior.

 

  • Incluso si hay diferentes versiones de un paquete, pnpm reutilizará en gran medida el código de versiones anteriores. Por ejemplo, al  comparar las actualizaciones de las dos versiones de express4.18.2 y , solo se volvieron a descargar 19 nuevos paquetes actualizados.epxress5.0.0-beta.1epxress5.0.0-beta.1

 

3.  ¿Cuál es la diferencia entre pnpmy ?npmyarn

pnpmLa diferencia con npmy yarnse explica principalmente en términos de gestión de dependencia de paquetes.

gestión de dependencias npm2

La gestión de dependencias generada por npm2 es relativamente simple y directa: se completará directamente en la estructura del directorio local de acuerdo con la estructura del árbol de dependencias del paquete de instalación: 

 La ventaja de este método de npm2 es esa 比较的直观, pero la desventaja también es obvia.

  1. Las dependencias jerárquicas son demasiado profundas
  2. La misma versión del mismo paquete se descargará varias veces, lo que provocará una baja utilización y ocupará mucho espacio en disco.

gestión de dependencia de npm3/hilado 

En respuesta a las dos deficiencias de npm2, npm3 ha realizado un cambio. Ya no utiliza una estructura anidada, sino que aplana las dependencias. Esto puede resolver los problemas de dependencias jerárquicas profundas y utilización de paquetes. Entonces las dependencias anteriores La relación se verá así :

 

Se ve así en el archivo: 

 

Podemos ver que [email protected]es la misma que la versión [email protected]referenciada , por lo que se mostrará en mosaico a continuación. Entonces, ¿qué sucede si la versión del paquete referenciada es diferente? Me gusta , espera estos paquetes.acceptsnode_modulesdebughttp-errorsstatuses

En este punto, node_modulesla estructura queda así: 

 

 

 En cuanto a por qué [email protected]los paquetes dependientes están en el directorio raíz node_modules, esta es una de las reglas propias de npm.

npm 3.xha adoptado un enfoque plano para la instalación desde el principio node_modules. Durante la instalación, npm atravesará todo el árbol de dependencias, ya sea una dependencia directa del proyecto o una subdependencia, se instalará primero en el directorio raíz node_modules. Al encontrar un paquete con el mismo nombre, si se descubre que existe en el directorio raíz node_modulespero no cumple con los requisitos , el paquete que cumple las condiciones semver-rangese instalará en la subdependencia .node_modules

Este método de ordenamiento en mosaico de npm3 resuelve el problema de las dependencias jerárquicas profundas y la utilización de paquetes, pero también introduce otros problemas:

  • Los paquetes que no se introducen manualmente, como [email protected]las dependencias cookie, se introducen manualmente en el proyecto, pero aún se pueden usar. Esto hará que Express cambie su política y deje de usar cookies, y las cookies se usan en nuestro proyecto. Esto hará que Project no se puede iniciar
  • Aunque npm comparte la misma versión de dependencias, si las versiones son diferentes, npm seguirá descargando completamente dos versiones diferentes, lo que también provocará una redundancia de dependencias.

 Para resolver algunos problemas causados ​​por npm3, pnpm adopta otra forma de gestionar las dependencias: el  node_modules diseño de pnpm utiliza enlaces simbólicos para crear tubos estructurales anidados de dependencias.

node_modules Cada archivo de .pnpmcada paquete es un vínculo físico desde el almacenamiento direccionable por contenido.

Este es  node_modules el único archivo "real" en formato . Una vez que todos los paquetes están vinculados  node_modules, se crean enlaces simbólicos para construir una estructura de gráfico de dependencia anidada.

Usamos pnpm para instalar [email protected]y [email protected], el directorio generado es el siguiente:

Las dependencias en node_modulesson solo package.jsonlas dependencias introducidas manualmente en expressy koa. Si tiene cuidado, encontrará una flecha detrás de estos dos archivos, y esta flecha es el enlace suave utilizado por pnpm para señalar el .pnpmarchivo real del archivo: 

 

 Estos archivos se almacenarán de manera uniforme en la memoria. Si hay dependencias en diferentes versiones, pnpm solo descargará los diferentes archivos en diferentes versiones y los agregará a la tienda.

例如,如果某个包有100个文件,而它的新版本只改变了其中1个文件。那么 pnpm update 时只会向存储中心额外添加1个新文件,而不会因为仅仅一个文件的改变复制整新版本包的内容。

Todos los archivos se almacenan en algún lugar de su disco duro.

当软件包被被安装时,包里的文件会硬链接到这一位置,而不会占用额外的磁盘空间这允许你跨项目地共享同一版本的依赖。

 

Instalar y usar

instalación npm -g pnpm

Dominio Significado
pnpm add sax Salvar a dependencies
pnpm add -D sax Salvar a devDependencies
pnpm add -O sax Salvar a optionalDependencies
pnpm add -g sax Instalar el paquete globalmente
pnpm add sax@next next Instalar desde  etiqueta
pnpm add [email protected] Instalar la versión especificada 3.0.0

 Descargar dependencias

pnpm install o pnpm i

删除依赖 

pnpm remove o  pnpm rm o  pnpm uninstall o pnpm un 

Supongo que te gusta

Origin blog.csdn.net/Javahtml12/article/details/131600319
Recomendado
Clasificación