Установка различной версии Node.js для конкретного проекта (папки) с помощью NVM
Я знаю, что могу изменить версию Node.js с помощью команды nvm use
в командной строке. Однако я хочу установить определённую версию Node.js для конкретного проекта (папки). Эта версия меняется с помощью команды nvm use
, но при перезапуске терминала
или IDE WebStorm
она снова сбрасывается на версии по умолчанию
.
Как я могу настроить nvm
, чтобы он запоминал эту другую версию для определённого проекта (папки)?
4 ответ(ов)
Вы можете использовать файл .nvmrc
в корне проекта, указав в нем нужную версию Node.js. Например: v12.4.0
или v10.16.0
. Убедитесь, что эта версия уже установлена; иначе будет использоваться версия Node.js, установленная по умолчанию на вашем компьютере.
Использование .zshrc без постоянного запуска nvm use
Сценарий использования:
- Если вы хотите использовать другую версию Node.js для конкретного каталога.
- Переход в этот каталог автоматически переключает вас на нужную версию Node.js.
- Переход из этого каталога обратно переключает на версию по умолчанию.
Решение
Создайте файл
.nvmrc
в нужном каталоге и добавьте туда необходимую<версию node>
.Например:
18
,18.1
или18.3.1
. Убедитесь, что указанная версия установлена на вашем компьютере. Если вы укажете18
, будет выбрана любая установленная версия с мажорной версией 18.Добавьте следующие строки в ваш файл
.zshrc
:export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" nvm_auto_use() { 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 "Возврат к версии nvm по умолчанию" nvm use default fi } add-zsh-hook chpwd nvm_auto_use nvm_auto_use
PS: Все дочерние каталоги внутри каталога с
.nvmrc
также унаследуют версию Node.js.
Если вы хотите установить версию node
по умолчанию для вашего проекта на v12
, выполните следующие шаги:
Откройте командную строку в корневой папке вашего проекта и выполните команду:
nvm use 12
После этого запустите команду:
node -v > .nvmrc
Однако это не решит вашу проблему полностью, так как вам всё равно потребуется запускать команду nvm use
без указания версии каждый раз, когда вы открываете проект.
Одним из решений, которое я нашел и которое работает для меня, является создание алиаса в терминале, который я использую. В моем случае, я добавил алиас в файл .zshrc
, чтобы можно было одновременно перейти в папку проекта и изменить версию Node.js, чтобы не забывать это делать каждый раз, когда я попадаю в эту конкретную папку. Алиас выглядит следующим образом:
alias foo='cd ~/путь/к/папке/проекта && nvm use <версия_node>'
Замените <версия_node>
на нужную вам версию Node.js. Теперь, просто вводя foo
в терминале, вы сможете быстро перейти в папку проекта и установить нужную версию Node.js с помощью nvm
.
Как установить версию Node по умолчанию с помощью NVM?
nvm постоянно "забывает" Node.js в новой сессии терминала
Как узнать версию установленного npm пакета?
Как задать переменные окружения из файла package.json?
Самый быстрый способ скопировать файл в Node.js