Índice
- ¿Qué es pnpm?
- ¿Cómo funciona internamente pnpm?
- Características de pnpm
- Principales comandos de pnpm
- Conclusiones
- Referencias
1. ¿Qué es pnpm?
pnpm es un gestor de paquetes para proyectos web. Se encarga de administrar todas las dependencias de nuestro proyecto pero brindando una mejor optimización y mantenimiento de los mismos.
La "p" de pnpm significa performace, dato que nos da un spoiler del funcionamiento de esta herramienta.
2. ¿Cómo funciona internamente pnpm?
Para ilustrar mejor el funcionamiento interno de pnpm vamos a ejemplificar todo con un caso de uso:
Instalar un paquete
Imagina que quieres instalar un paquete en tu proyecto, por ejemplo loadash.
loadash es un paquete de funciones de utilidad muy usado hace algunos años pero que nos servirá de ejemplo para este caso.
Lo que tendríamos que hacer es: pnpm add loadash
Entonces pnpm se encarga de ir a internet, buscar el paquete e instalarlo; además de crear el tan famoso directorio package.json
donde se administran todas las versiones de las dependencias.
El almacén global compartido
Esta es la clave del funcionamiento de pnpm: al descargar el paquete no lo almacena en el directorio del proyecto como tal, sino que, dependiendo del sistema operativo crea lo que se denomina el almacén global compartido.
Este almacén es una dirección en local de nuestro PC donde se guardaran todas las dependencias con sus respectivas versiones, por ejemplo en Windows se guardaría en: C:\Users\TuUsuario\AppData\Local\pnpm\store
.
Ahora imagina que tenemos otros 10 proyectos en nuestra PC que también necesitan loadash para funcionar. Si usáramos npm tendríamos que descargar 10 veces el mismo paquete (1 para cada proyecto) lo que significa que es una manera tremendamente ineficiente de administrar nuestras dependencias.
Es por este motivo el meme tan popular que le hacemos a npm:
pnpm solo descarga la dependencia una sola vez y la podemos usar en cualquier proyecto que lo necesite, por este motivo pnpm es mucho más óptimo y eficiente que otros gestores de paquetes.
¿Cómo se accede al paquete?
Para acceder a los paquetes pnpm tiene un sistema de enlaces, algo parecido a los accesos directos a los programas que tenemos en nuestros escritorios de nuestras computadoras.
Como todos los paquetes se almacenan en un solo lugar, en el almacén global compartido, entonces pnpm crea un enlace entre nuestro proyecto y dicho almacén y hace lo mismo para aquel proyecto que necesite un paquete en concreto.
En nuestro ejemplo si a loadash lo requieren de 10 proyectos diferentes entonces se crean 10 enlaces diferentes a dicho paquete, esto mejora enormemente todo el proceso de gestión de paquetes y hace que nuestra carpeta de node_modules
sea mas liviana.
Esta explicación del proceso interno de pnpm para la gestión de los paquetes es muy simplificada pero suficiente para comprender porque pnpm es una mejor herramienta. Existen otros procesos para explicar que sucede si los paquetes son de diferentes versiones o si las dependencias tienen sus propias dependencias.
3. Características de pnpm
pnpm es más rápido
Al no tener que descargar el mismo paquete para diferentes proyectos sino poder reutilizar la misma dependencia muchas veces hace que pnpm sea muy eficiente en términos de tiempo.
pnpm ocupa menos espacio
Como solo tenemos que descargar el paquete una vez hace que las dependencias ocupan mucho menos espacio, lo que se deriva en una carpeta node_modules
más liviana.
pnpm tiene menos conflictos
Al usar enlaces para acceder a los paquetes pnpm es menos propenso a tener conflictos entre dependencias.
4. Principales comandos de pnpm
Habiendo comprendido mejor porque pnpm es una herramienta genial, veamos algunos de sus comandos mas útiles:
//crear el package.json
pnpm init
// instalar todas las dependencias
pnpm install
// instalar una dependencia
pnpm add <dependencia>
// instalar una dependencia de desarrollo
pnpm add -D <dependencia>
// quitar una depedencia
pnpm remove <dependencia>
// instalar una dependencia globalmente
pnpm add -g <dependencia>
// listar todas las dependencias
pnpm list
// actualizar una dependencia
pnpm update <dependencia>
// listar todos los paquetes que tienen una actualización
pnpm outdated
5. Conclusiones
pnpm es una herramienta de desarrollo web moderno que nos facilita mucho la gestión de paquetes en nuestros proyectos web, es sencilla de manejar y muy parecida a npm por lo que migrar no cuesta casi nada.
Recomiendo mucho su uso en nuestros proyectos por todas las ventajas de almacenamiento y velocidad que nos proporciona.
6. Referencias
- https://dev.to/dwarvesf/what-is-pnpm-84
- https://medium.com/pnpm/why-should-we-use-pnpm-75ca4bfe7d93
- https://dev.to/stackblitz/what-is-pnpm-and-is-it-really-so-fast-and-space-efficient-29la
Otros post de mi autoría que te pueden interesar:
Top comments (0)