Настройка nvmrc
Введение
При разработке нескольких проектов каждому проекту может потребоваться своя версия Node.js. В таких случаях нам нужно указать версию Node.js для каждого проекта, выполняя команды nvm install и nvm use в терминале для установки и переключения версий.
Однако ручное выполнение команд в терминале каждый раз становится утомительным, особенно по мере увеличения количества проектов. Легко забыть переключить версии или переключиться на неправильную версию, что может привести к тому, что проекты не запустятся или возникнут ошибки во время выполнения.
Здесь нам нужен метод управления версиями Node.js и автоматического переключения между ними, и именно здесь в игру вступает .nvmrc.
Что такое .nvmrc?
Из приведенного выше объяснения вы можете понять, что файл .nvmrc используется для управления версией Node.js для нашего проекта. Этот файл очень прост: он содержит только текст, представляющий версию Node.js, которую может распознать nvm, например v18.12.0.
Как использовать файл .nvmrc?
Вы можете создать файл .nvmrc с содержимым, которое является номером версии Node.js или другим текстом, который может понять nvm. Для получения подробной информации вы можете ввести nvm --help в терминале.
С файлом .nvmrc, когда вы выполняете такие команды, как nvm use, nvm install, nvm exec, nvm run и nvm which в терминале без указания версии, будет использоваться версия, указанная в файле .nvmrc.
Создание файла .nvmrc
Например, в текущем каталоге, чтобы nvm указал последнюю версию 18.12, последнюю версию LTS или последнюю версию Node.js, вы можете использовать команду echo для создания файла .nvmrc:
bash
$ echo "18.12" > .nvmrc
# Установить последнюю версию LTS
$ echo "lts/*" > .nvmrc
# Установить последнюю версию
$ echo "node" > .nvmrcКоманды типа nvm use будут обходить структуру каталогов вверх от текущего каталога в поисках файла .nvmrc. Это означает, что выполнение таких команд, как nvm use, в любом подкаталоге каталога с файлом .nvmrc все равно будет использовать этот файл .nvmrc.
Файл .nvmrc должен содержать <version>, который соответствует тому, что указано в nvm --help, за которым следует новая строка. Завершающие пробелы не допускаются, и завершающая новая строка обязательна.
Как показано на изображении ниже, после v14.21.3 нет пробела, только разрыв строки.

Глубокая интеграция с терминалами оболочки
Вы можете использовать avn для глубокой интеграции с вашей оболочкой и автоматического вызова nvm при смене каталогов.
Если вы предпочитаете легкое решение, вы можете использовать метод ниже.
Автоматическое переключение версий Node.js в терминале zsh на основе файла .nvmrc
После добавления следующего кода в ваш $HOME/.zshrc, nvm use будет автоматически вызываться всякий раз, когда вы входите в каталог, содержащий файл .nvmrc. Строка в файле .nvmrc сообщает nvm, какую версию Node.js использовать.
bash
# Открыть домашний каталог и отредактировать файл .zshrc
$ cd
$ vi .zshrcЭто код, который нужно записать в .zshrc:
bash
# Скопируйте этот сегмент кода в файл .zshrc
# поместите это после инициализации 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После редактирования файла .zshrc выполните source .zshrc, чтобы команда вступила в силу:
bash
$ source ~/.zshrcВ проектах с файлом .nvmrc, когда вы открываете интегрированный терминал в vscode, вы обнаружите, что nvm use выполняется автоматически, с соответствующим выводом в командной строке.
