Como utilizar pnpm con Angular

09 Marzo 2023 »
angular
javascript

Introducción

pnpm es un gestor de paquetes de javascript el cual una de sus mejores ventajas es reducir el tiempo de instalación de las dependencias

Instalación de pnpm

npm install -g pnpm

Configuración con angular

Proyecto nuevo

  • Utilizar el angular CLI con pnpm para crear un nuevo proyecto pnpm --package=@angular/cli dlx ng new amazing-project --package-manager pnpm\

  • El angular CLI nos preguntara las opciones de configuración y finalmente instala el proyecto Install Angular with pnpm.png

Al abrir el proyecto podemos ver el archivo pnpm-lock.yaml pnpm-lock-file.png

Proyecto existente con npm

  • Ejecuta el comando de pnpm install y automáticamente creara el archivo pnpm-lock.yaml

  • Luego de eso borrar el archivo package-lock.json rm package-lock.json

  • Ejecutar pnpm start para confirmar que todo funciona correctamente

En caso de que el proyecto no funcione hay la opción de instalar las dependencias respetando las diferentes versiones requeridas por los paquetes mediante pnpm install --shamefully-hoist=true

Comparando la instalación de pnpm y npm en un proyecto nuevo

Considerando:

  • hemos instalado por primera vez el proyecto utilizando npm y pnpm.

  • existen los archivos package-lock.json y pnpm-lock.yaml

  • la carpeta node_modules no se encuentra en el proyecto

Instalación con npm

Duración: 14 segundos npm install.gif

Instalación con pnpm

Duración: 2.2 segundos pnpm install.gif

Por qué pnpm es mas rápido?

Debido a que pnpm almacena las dependencias en un solo sitio y crea enlaces simbólicos a la carpeta node_modules según se necesite, de esta forma evitar descargar los paquetes y reutiliza los preexistentes en la computadora.

Conclusiones

  • La instalación de un proyecto es definitivamente mas rápido con pnpm que con npm

  • La experiencia de desarrollo mejora al esperar menos tiempo en instalar las dependencias

  • Reducir el tiempo de instalación también reduce el costo por servicios de CI/CD

Referencias