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
:
$ 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.
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.
# Abrir el directorio home y editar el archivo .zshrc
$ cd
$ vi .zshrc
Este es el código que debe escribirse en .zshrc
:
# 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:
$ 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.