General

Cómo usar la versión correcta de Node.js con nvm y zsh en macOS

Photo by Anas Alshanti

Muchas veces nos encontramos trabajando en distintos proyectos, que usan diferentes versiones de Node.js (tanto front-end como back-end). Es por eso que resulta útil automatizar este proceso incluyendo un archivo .nvmrc en cada proyecto y haciendo uso de un hook en nuestra consola.

Prerrequisitos

Primero vamos a editar el archivo ~/.zshrc usando el comando

nano ~/.zshrc

O bien abriéndolo con nuestro editor de preferencia (Visual Studio Code, etc.)

Luego, al final del archivo, vamos a agregar el siguiente contenido:

autoload -U add-zsh-hook
use_nvmrc_version_automatically() { 
  if [[ -f .nvmrc ]]; then
    echo ".nvmrc FOUND now INSTALLING and USING $(cat .nvmrc)"
    nvm install $(cat .nvmrc) && nvm use $(cat .nvmrc)
  fi
}
add-zsh-hook chpwd use_nvmrc_version_automatically
use_nvmrc_version_automatically

Yo preferí quitar la parte de nvm install $(cat .nvmrc) &&, ya que siempre intenta instalar la versión encontrada, aún cuando ya esté instalada en nuestro sistema, lo cual degrada un poco la performance. Elijo instalarla yo manualmente en caso de ser necesario, pero esto queda a gusto de cada uno.

Guardamos y cerramos el archivo, y finalmente ejecutamos source ~/.zshrc en la consola ya abierta o bien, cerramos todas las ventanas de la consola que tengamos abiertas y al abrir una nueva ventana, esto ya debería estar funcionando correctamente.