Drupal Pills
Joan Galtés i Moreno

Cómo detectar automáticamente la versión de NodeJs a utilizar en una carpeta

Lo primero que deberemos hacer es instalar nvm (del inglés Node Version Manager) en nuestro sistema operativo. Una herramienta super útil para cambiar de version de NodeJS a conveniencia, con sencillos comandos de terminal.

Seguidamente, para crear un archivo .nvmrc que detecte automáticamente la versión de NodeJS a usar y establecer la mencionada versión de NodeJS en el formato correcto, solo es necesario ejecutar el siguiente comando en nuestra terminal:

node -v > .nvmrc

El resultado podría ser este en caso de estar usando la versión 16 de NodeJS, pero puedes cambiarlo según te convenga:

v16.20.2

A continuación, deberás añadir el siguiente snippet de código a tu archivo .bashrc (si usas Bash como tu terminal predeterminada) o a .zshrc (si usas Zsh). Una vez añadido, y después de recargar tu terminal, el sistema cambiará automáticamente a la versión indicada en el archivo .nvmrc siempre que encuentre uno en tu carpeta actual mientras navegas por el sistema de archivos de tu máquina.

# Snippet que cambia automáticamente la versión de node cuando se encuentra un archivo .nvmrc
autoload -U add-zsh-hook
load-nvmrc() {
  local node_version="$(nvm version)"
  local nvmrc_path="$(nvm_find_nvmrc)"
  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$node_version" ]; then
      nvm use
    fi
  elif [ "$node_version" != "$(nvm version default)" ]; then
    echo "Revirtiendo a la versión por defecto de nvm"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

Por último, te dejo unos útiles comandos para recargar tu terminal (según sea Bash o Zsh) sin necesidad de cerrarla y volverla a abrir:

  • Para Bash, ejecuta:
source ~/.bashrc
  • Para Zsh, ejecuta:
source ~/.zshrc

Sobre el autor

Joan Galtés i Moreno

Desarrollador full-stack, especializado en Drupal desde 2008. Me gusta concebir y desarrollar tanto el back-end como el front-end en todos mis proyectos. Entusiasta de las nuevas tecnologías, con un buen dominio de PHP, MySQL, Git, Javascript, HTML 5, SASS y CSS 3, poniendo siempre el énfasis en la usabilidad y la accesibilidad en todo aquello que desarrollo.

Compartir

Deja tu comentario