Instalación de Node con PNPM

PNPM: Performant Node Package Manager


Las siglas de pnpm significan performant node package manager, es decir, gestor de paquetes de node de alto rendimiento. Tradicionalmente, npm siempre ha gestionado la instalación de paquetes de una forma particular, mediante la cual gasta demasiado tiempo y espacio en disco.

NPM vs PNPM

En el caso de pnpm, se utiliza una forma alternativa, donde se gestionan los paquetes mediante un almacén compartido, ahorrando espacio en disco y realizando una instalación de paquetes mucho más rápida.

Instalación de PNPM

Para instalar pnpm, simplemente necesitaremos tener instalado curl en nuestro sistema (en caso contrario, ejecutamos el primer comando de los siguientes) para descargar el script de instalación de pnpm e instalarlo:

$ sudo apt install curl
$ curl -fsSL https://get.pnpm.io/install.sh | sh -

Si en la instalación nos da el error ERR_PNPM_UNKNOWN_SHELL  Could not infer shell type es porque nuestra terminal no tiene establecida la terminal por defecto. Esto se puede solucionar fácilmente, escribiendo el comando export SHELL=/bin/bash.

Finalmente, hacemos un source ~/.bashrc (o simplemente, cerramos y volvemos a abrir la terminal, para obligar a cargar los cambios). Si todo ha ido bien, deberíamos tener instalada la última versión de pnpm. Lo podemos comprobar con el siguiente comando:

$ pnpm --version

Sin embargo, aún no tenemos Node instalado. Vamos a ello.

Instalación de Node con PNPM

Una vez instalado pnpm, vamos a por la instalación de Node. Podemos ver que versiones de Node son las actuales, entrando a la web oficial de NodeJS o simplemente, ejecutando el siguiente comando en una terminal:

$ pnpm env list --remote

[...]
20.8.0
20.8.1
20.9.0
20.10.0
21.0.0
21.1.0
21.2.0
21.3.0
21.4.0
21.5.0

Observa que el parámetro --remote es necesario para obtener las versiones disponibles desde la web de Node. Si lo omitimos, lo que obtendremos serán las versiones de node instaladas en nuestro sistema:

$ pnpm env list

Si examinas la página oficial de Node, como podrás ver, normalmente aparecen dos versiones:

  • La versión estable (recomendada): También llamada LTS
  • La versión experimental: Con las últimas novedades

Mi recomendación es instalar la primera de ellas. Esto puede hacerse directamente sin necesidad de ninguna comprobación de versiones, ejecutando el siguiente comando:

$ pnpm env use --global lts

Esto descargará la versión LTS de Node y la activará como versión por defecto. Puedes comprobar que todo ha ido bien, simplemente ejecutando los siguientes comandos para comprobar que Node ya está disponible en nuestro sistema.

$ node --version

$ npm --version

Si todo ha ido bien, debería darnos la versión disponible.

Cambiar versiones con PNPM

Lo que hemos visto es la versión rápida para instalar Node. Sin embargo, puede que sea posible que queramos ir cambiando de versión de Node según los proyectos en los que estemos trabajando. Para ello, podemos hacer uso de los siguientes comandos.

Por ejemplo, mediante pnpm env add --global podemos descargarnos versiones concretas de Node. Sin embargo, sólo las descargará y no las activará para utilizar. Si queremos que también se activen, ejecutaremos el comando pnpm env use --global. Ambos comandos, siempre seguidos de la versión a instalar:

$ pnpm env add --global 21.5.0
$ pnpm env use --global 21.5.0

Si en algún momento queremos desinstalar alguna versión de nuestro sistema, simplemente utilizaremos pnpm env remove:

$ pnpm env remove --global 21.5.0

Con esto, deberíamos poder trabajar con node y pnpm en las versiones que necesitemos. A medida que transcurra el tiempo, necesitaremos actualizar pnpm a las nuevas versiones que vayan apareciendo. Para ello, simplemente autoactualizaremos con pnpm:

$ pnpm install -g pnpm

Esto actualizará la versión de pnpm a la última disponible.

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev