Introducción a pnpm, la opción de reemplazo de npm que le permite ahorrar espacio en disco
Recientemente escribí sobre cómo tenemos node_modules
carpetas enormes y por qué esto no es necesariamente algo malo, pero reduciría el consumo del disco duro, ¿verdad?
Cada byte guardado en el disco se puede usar para otra cosa que no sea código de bibliotecas. Tengo un SSD de 512 GB en mi MacBook Pro que compré en 2010, pero algunas computadoras nuevas en 2019 se envían con un SSD de 128 GB (algo salió mal con la Ley de Moore cuando se trata de espacio en el disco duro).
En particular, una forma sería centralizar el almacenamiento del código de las bibliotecas en un lugar central y compartirlo con todos los proyectos en los que trabajas.
Esta es la principal propuesta de valor de pnpm , un proyecto muy interesante que puedes consultar en https://pnpm.js.org .
Es básicamente un reemplazo directo para npm
, lo que significa que una vez que lo instalas, puedes invocarlo pnpm install
para descargar las dependencias de un proyecto, y todo funcionará de manera transparente para ti.
Si tiene 10 proyectos que usan React en la misma versión, pnpm
lo instalará una vez y luego hará referencia a esa primera instalación en todos sus demás proyectos.
Esto también significa que la parte de inicialización del proyecto lleva mucho menos tiempo que si tuviera que descargar recursos utilizando el npm
procedimiento estándar. Es más rápido incluso si npm
se almacena el paquete en caché, porque pnpm
crea un enlace duro al repositorio local central, mientras que npm
hace una copia del paquete desde la caché.
La instalación se realiza pnpm
mediante npm
, por supuesto
npm install -g pnpm
Luego, al ser pnpm
un reemplazo directo, puedes usar todos los npm
comandos:
pnpm install reactpnpm update reactpnpm uninstall react
etcétera.
pnpm
Es especialmente apreciado en aquellas empresas donde existe la necesidad de mantener un gran número de proyectos con las mismas dependencias.
Por ejemplo, Glitch es una de esas empresas, ya que alberga una gran cantidad de proyectos Node.js.Te recomendamos Estufa de pellets
pnpm
Además de los npm
comandos habituales, les proporciona algunas utilidades, entre ellas pnpm recursive
, que se utiliza para ejecutar el mismo comando en todos los proyectos de una carpeta. Por ejemplo, puede inicializar 100 proyectos almacenados en la carpeta actual ejecutando pnpm recursive install
. Muy práctico.
Si utiliza npx
, que es una forma práctica (y recomendada) de ejecutar utilidades como create-react-app
, obtendrá los beneficios de pnpm
al usar el pnpx
comando que viene con pnpm
:
pnpx create-react-app my-cool-new-app
¿Dónde se instalan los paquetes? En macOS, en la ~/.pnpm-store/
carpeta (donde ~
significa tu carpeta de inicio). Lo instalé lodash
como ejemplo y esta fue la estructura de carpetas resultante:
➜ ~ tree .pnpm-store/.pnpm-store/└── 2 ├── _locks ├── registry.npmjs.org │ └── lodash │ ├── 4.17.11 │ │ ├── integrity.json │ │ ├── node_modules │ │ │ └── lodash │ │ │ ├── ... │ │ ├── package - node_modules/lodash │ │ └── packed.tgz │ └── index.json └── store.json
Hay muchas cosas más avanzadas que aprender sobre la herramienta, ¡pero espero que esto te ayude a comenzar pnpm
!
¿Deberías utilizarlo para uso diario? Probablemente no, solo úsalo npm
a menos que tengas necesidades que esta herramienta resuelva por ti, como la falta de espacio en disco.
Tips de Node.js
Tal vez te puede interesar:
- Introducción a React
- Agregar evento de clic a los elementos DOM devueltos desde querySelectorAll
- Cómo cambiar el valor de un nodo DOM
- Cómo comprobar si un elemento DOM tiene una clase
¿Qué es pnpm?
Recientemente escribí sobre cómo tenemos node_modulescarpetas enormes y por qué esto no es necesariamente algo malo, pero reduciría el consumo del disco du
programar
es
2025-01-17

Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente