PNPM es un gestor de paquetes o dependencias para Node JS. Es rápido, eficiente y soporta monorepos.
El mundo de JavaScript está en constante evolución, y aunque ciertamente existen varias herramientas para un mismo propósito, la competencia entre ellas hace que algunas sean mejores que otras en determinados entornos o ofrezcan características que las demás no poseen. PNPM es un claro ejemplo.
PNPM (Performant Node Package Manager) es un gestor de paquetes o dependencias para Node.js, un entorno de ejecución para aplicaciones JavaScript, creado por Zoltan Kochan en 2016. Uno de los principales motivos de su creación fue optimizar el uso del espacio en disco que NPM consume al instalar dependencias, logrando ahorrar gigabytes de almacenamiento.
La principal diferencia con NPM es cómo guarda las dependencias, guardando sólo una copia por cada paquete independientemente de en cuantos proyectos se use en nuestro sistema.
Además, PNPM es mucho más rápido que NPM. Veamos una comparativa con NPM para instalar dependencias o actualizarlas de distintas formas (benchmark completo):
acción | cache | lockfile | node_modules | npm | pnpm |
---|---|---|---|---|---|
instalar | 29.3s | 8s | |||
instalar | ✔ | ✔ | ✔ | 1.4s | 371ms |
instalar | ✔ | ✔ | 7.9s | 2.4s | |
instalar | ✔ | 11.9s | 5.5s | ||
instalar | ✔ | 10.6s | 5s | ||
instalar | ✔ | ✔ | 1.6s | 2.1s | |
instalar | ✔ | ✔ | 1.3s | 375ms | |
instalar | ✔ | 1.6s | 5s | ||
actualizar | n/d | n/d | n/d | 6.2s | 3.6s |
La principal desventaja es que no es una herramienta tan extendida como NPM. Puede haber problemas en sistemas de integración contínua que no soporten la herramienta. Además NPM viene instalada por defecto con node mientras que PNPM requiere ser instalada explícitamente.
Existen varias formas para instalar PNPM, pero la más sencilla es si ya tienes instalado NODE en tu sistema. En este caso sólo es necesario ejecutar el siguiente comando que instalará PNPM de forma global:
npm install -g pnpm
Para iniciar un proyecto nuevo PNPM puedes ejecutar
pnpm init
Para instalar un paquete como dependencia
pnpm add <pkg>
para instalarla como una dependencia DEV puedes pasarle la opción -D
pnpm add -D <pkg>
Si deseamos instalar todas las dependencias especificadas en el archivo package.json
podemos ejecutar
pnpm install
o
pnpm i
package.json
Si queremos ejecutar un script definido en el apartado scripts de nuestro archivo package.json
:
... "scripts": { "build": "astro build", }...
pnpm build
Para actualizar a las últimas versiones de los paquetes según las versiones definidas en el package.json
pnpm up
Si deseamos instalar las últimas versiones ignorando las versiones definidas en el package.json
pnpm up --latest
Podemos eliminar una dependencia de nuestro proyecto usando
pnpm rm astro
O si está instalada de forma global
pnpm rm -g express
Hemos aprendido qué es PNPM, como instalarlo y los comandos básicos para usarlo y hemos visto una comparativa de rendimiento con NPM. No olvides visitar la documentación oficial de PNPM para conocer más detalles de este gestor de paquetes.