0

Установка различной версии Node.js для конкретного проекта (папки) с помощью NVM

7

Я знаю, что могу изменить версию Node.js с помощью команды nvm use в командной строке. Однако я хочу установить определённую версию Node.js для конкретного проекта (папки). Эта версия меняется с помощью команды nvm use, но при перезапуске терминала или IDE WebStorm она снова сбрасывается на версии по умолчанию.

Как я могу настроить nvm, чтобы он запоминал эту другую версию для определённого проекта (папки)?

4 ответ(ов)

0

Вы можете использовать файл .nvmrc в корне проекта, указав в нем нужную версию Node.js. Например: v12.4.0 или v10.16.0. Убедитесь, что эта версия уже установлена; иначе будет использоваться версия Node.js, установленная по умолчанию на вашем компьютере.

0

Использование .zshrc без постоянного запуска nvm use

Сценарий использования:

  1. Если вы хотите использовать другую версию Node.js для конкретного каталога.
  2. Переход в этот каталог автоматически переключает вас на нужную версию Node.js.
  3. Переход из этого каталога обратно переключает на версию по умолчанию.

Решение

  1. Создайте файл .nvmrc в нужном каталоге и добавьте туда необходимую <версию node>.

    Например: 18, 18.1 или 18.3.1. Убедитесь, что указанная версия установлена на вашем компьютере. Если вы укажете 18, будет выбрана любая установленная версия с мажорной версией 18.

  2. Добавьте следующие строки в ваш файл .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.

0

Если вы хотите установить версию node по умолчанию для вашего проекта на v12, выполните следующие шаги:

Откройте командную строку в корневой папке вашего проекта и выполните команду:

nvm use 12

После этого запустите команду:

node -v > .nvmrc

Однако это не решит вашу проблему полностью, так как вам всё равно потребуется запускать команду nvm use без указания версии каждый раз, когда вы открываете проект.

0

Одним из решений, которое я нашел и которое работает для меня, является создание алиаса в терминале, который я использую. В моем случае, я добавил алиас в файл .zshrc, чтобы можно было одновременно перейти в папку проекта и изменить версию Node.js, чтобы не забывать это делать каждый раз, когда я попадаю в эту конкретную папку. Алиас выглядит следующим образом:

alias foo='cd ~/путь/к/папке/проекта && nvm use <версия_node>'

Замените <версия_node> на нужную вам версию Node.js. Теперь, просто вводя foo в терминале, вы сможете быстро перейти в папку проекта и установить нужную версию Node.js с помощью nvm.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь