Skip to content

Configuración de nvmrc

Introducción

Cuando desarrollamos múltiples proyectos, cada proyecto puede requerir una versión diferente de Node.js. En estos casos, necesitamos especificar la versión de Node.js para cada proyecto ejecutando los comandos nvm install y nvm use en la terminal para instalar y cambiar entre versiones.

Sin embargo, ejecutar manualmente comandos en la terminal cada vez se vuelve tedioso, especialmente a medida que aumenta el número de proyectos. Es fácil olvidar cambiar de versión o cambiar a la versión incorrecta, lo que puede hacer que los proyectos no se inicien o encuentren errores durante la ejecución.

Es aquí donde necesitamos un método para gestionar las versiones de Node.js y cambiar automáticamente entre ellas, y aquí es donde entra en juego .nvmrc.

¿Qué es .nvmrc?

De la explicación anterior, puedes entender que el archivo .nvmrc se utiliza para gestionar la versión de Node.js para nuestro proyecto. Este archivo es muy simple: contiene solo texto que representa una versión de Node.js que nvm puede reconocer, como v18.12.0.

¿Cómo usar el archivo .nvmrc?

Puedes crear un archivo .nvmrc con contenido que sea un número de versión de Node.js u otro texto que nvm pueda entender. Para más detalles, puedes escribir nvm --help en la terminal.

Con el archivo .nvmrc, cuando ejecutas comandos como nvm use, nvm install, nvm exec, nvm run y nvm which en la terminal sin especificar una versión, se utilizará la versión especificada en el archivo .nvmrc.

Creación de un archivo .nvmrc

Por ejemplo, en el directorio actual, para que nvm especifique la última versión de la versión 18.12, la última versión LTS o la última versión de Node.js, puedes usar el comando echo para crear un archivo .nvmrc:

bash
$ echo "18.12" > .nvmrc
# Establecer la última versión LTS
$ echo "lts/*" > .nvmrc
# Establecer la última versión
$ echo "node" > .nvmrc

Comandos como nvm use recorrerán la estructura de directorios hacia arriba desde el directorio actual buscando el archivo .nvmrc. Esto significa que ejecutar comandos como nvm use en cualquier subdirectorio de un directorio con un archivo .nvmrc seguirá usando ese archivo .nvmrc.

El archivo .nvmrc debe contener una <versión> que se ajuste a lo que se enumera en nvm --help, seguida de una nueva línea. No se permiten espacios al final, y se requiere una nueva línea al final.

Como se muestra en la imagen a continuación, no hay espacio después de v14.21.3, solo un salto de línea.

nvmrc

Integración profunda con terminales shell

Puedes usar avn para integrarlo profundamente con tu shell e invocar automáticamente nvm al cambiar de directorios.

Si prefieres una solución ligera, puedes usar el método a continuación.

Cambiar automáticamente las versiones de Node.js en la terminal zsh basado en el archivo .nvmrc

Después de agregar el siguiente código a tu $HOME/.zshrc, nvm use se llamará automáticamente cada vez que entres en un directorio que contenga un archivo .nvmrc. La cadena en el archivo .nvmrc le dice a nvm qué versión de Node.js usar.

bash
# Abrir el directorio home y editar el archivo .zshrc
$ cd
$ vi .zshrc

Este es el código que debe escribirse en .zshrc:

bash
# Copiar este segmento de código en el archivo .zshrc
# ¡colocar esto después de la inicialización de nvm!
autoload -U add-zsh-hook
load-nvmrc() {
  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" != "$(nvm version)" ]; then
      nvm use
    fi
  elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

Después de editar el archivo .zshrc, ejecuta source .zshrc para que el comando surta efecto:

bash
$ source ~/.zshrc

En proyectos con un archivo .nvmrc, cuando abras la terminal integrada en vscode, encontrarás que nvm use se ejecuta automáticamente, con la correspondiente salida en la línea de comandos.

nvmrc

Construido con VitePress