Управление версиями Node.js через nvm на Ubuntu 24.04

Управление версиями Node.js через nvm на Ubuntu 24.04

Ваши проекты требуют разных версий Node.js? С nvm это не проблема! Рассказываем, как установить nvm (Node Version Manager) на Ubuntu 24.04, как устанавливать и управлять версиями Node.js через nvm, как интегрировать nvm с VS Code.

Введение

Node.js стремительно развивается, и одновременная работа над проектами с разными требованиями к версиям среды — обычная практика. В этой статье мы разберём, как профессионально использовать nvm (Node Version Manager) на Ubuntu 24.04 — выходя за рамки базовой установки.

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

Виртуальный сервер VPS/VDS — ваш личный сервер для сайтов, магазинов, ботов и других проектов.

Когда нужен nvm

При установке Node.js через системные пакеты (apt) вы получаете фиксированную версию, которая может не соответствовать требованиям проектов nwm решает сразу три проблемы:

  • Параллельное существование версий — можно одновременно работать с проектами на Node.js 16.x (legacy), 22.x (LTS) и 24.x (Current).
  • Изоляция глобальных пакетов — установка с npm install -g создаёт отдельные окружения для каждой версии Node.js, предотвращая конфликты зависимостей.
  • Безопасная установка без sudo — пакеты устанавливаются в домашнюю директорию пользователя, что исключает риски повреждения системных файлов.

Безопасная установка с верификацией

Первый шаг — удаление существующих версий Node.js, установленных стандартным способом, так как пакеты nodejs и npm из репозиториев Ubuntu могут конфликтовать с версиями, управляемыми через nvm:

sudo apt purge --auto-remove nodejs npm -y
rm -rf ~/.npm ~/.node-gyp

Флаг --auto-remove удаляет неиспользуемые зависимости, а очистка ~/.npm исключает проблемы с кешем.

После этого импортируйте ключ разработчиков nvm:

gpg --keyserver hkps://keys.openpgp.org --recv-keys 255F6A817D26E3529C841FD17E2C2D7C80C596B2

Затем загрузите и верифицируйте скрипт:

curl -s -o install.sh https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh
gpg --verify install.sh

Вывод Good signature гарантирует, что скрипт не был изменён злоумышленниками.

После верификации выполните скрипт install.sh — он установит nvm в систему:

bash install.sh
source ~/.bashrc

Что происходит:

  • скрипт клонирует репозиторий nvm с GitHub в ~/.nvm;
  • добавляет инициализацию nvm в ~/.bashrc (или ~/.zshrc);
  • source применяет изменения без перезапуска терминала.

Теперь настройте nvm для работы в Ubuntu 24.04. Следующие команды добавляют конфигурацию в файл ~/.profile (который выполняется при входе в систему) для управления загрузкой nvm:

echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.profile
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" --no-use' >> ~/.profile

Флаг --no-use — ключевой компонент этой команды для оптимизации: он ускоряет запуск терминала в Ubuntu 24.04, откладывая полную инициализацию nvm до первого обращения к Node.js. Вместо загрузки всех компонентов при старте оболочки (что занимает 200-500 мс), nvm активируется только при первом вызове node, npm или nvm, экономя время при частом открытии терминалов.

Установка разных версий

Для проектов с долгосрочной поддержкой устанавливайте только LTS-версии, например:

nvm install --lts=hydrogen  # Node.js 18.x
nvm install --lts=iron      # Node.js 20.x

Кодовые имена (Hydrogen, Iron) помогают однозначно идентифицировать ветку, когда несколько LTS-версий активны одновременно.

Работа с .nvmrc

Файл .nvmrc — это текстовый файл в корне проекта, содержащий номер версии Node.js, необходимой для его работы.

Создайте его в корне проекта:

echo "20" > .nvmrc

Команда запишет в файл, что проект требует Node.js версии 20.x. Можно указать и более точную версию, например 20.12.2.

Затем настройте оболочку на автоматическое переключение версии Node.js при переходе в директорию проекта, в данном случае Zsh:

autoload -U add-zsh-hook
load-nvmrc() {
  if [[ -f .nvmrc ]]; then
    nvm use --silent
  fi
}
add-zsh-hook chpwd load-nvmrc

Автоматическое переключение версии Node.js при входе в директорию проекта избавляет от необходимости помнить и вручную вводить команду nvm use и предотвращает ошибки, которые могут возникнуть, если версия Node.js в системе не соответствует требованиям проекта. Например, если проект требует Node.js 20, а активирована версия 18, то могут возникнуть ошибки при запуске, так как некоторые модули или синтаксис могут быть недоступны. 

Для Bash настройка аналогична, но использует другой механизм. Можно использовать переменную PROMPT_COMMAND или переопределить cd.

Пример для Bash (добавить в ~/.bashrc):

load-nvmrc() {
  if [[ -f .nvmrc ]]; then
    nvm use --silent
  fi
}
cd() {
  builtin cd "$@"
  load_nvmrc
}

Или более безопасный вариант (так как переопределение cd может нарушить работу других скриптов):

  load_nvmrc() {
    if [[ -f .nvmrc ]]; then
      nvm use --silent
    fi
  }
  export PROMPT_COMMAND="load_nvmrc; $PROMPT_COMMAND"

Перенос глобальных пакетов

При обновлении версии Node.js nvm может переносить глобальные пакеты из текущей версии в новую:

nvm install 22.2.0 --reinstall-packages-from=20

При выполнении nvm скопирует список пакетов и установит их в новой версии (22.2.0). Это сохранит все инструменты без ручной переустановки.

Обратите внимание

nvm установит версии из исходной установки, но некоторые из них могут быть не совместимы с новой версией Node.js, поэтому после переноса проверьте работу ключевых инструментов.

Что не переносится:

  • локальные конфигурации (файлы в ~/.config/package-name/ нужно копировать вручную),
  • скрипты инициализации (например, хуки npm init в ~/.npm-init.js),
  • сертификаты и ключи.

Интеграция с VS Code

Интеграция nvm с VS Code решает проблему рассинхронизации сред выполнения JavaScript между редактором и терминалом.

Сначала установите расширение nvm в VS Code (автор devine-davies), затем добавьте в главный конфигурационный файл редактора (settings.json):

"nvm.path": "/home/$USER/.nvm"
"nvm.defaultVersion": "20",
"nvm.autoSwitch": true

Расширение автоматически ищет установленные версии в ~/.nvm/versions/node и использует указанную в .nvmrc проекта. Параметр "nvm.defaultVersion": "20" устанавливает версию по умолчанию — она будет использоваться, если в проекте отсутствует .nvmrc. Самый важный параметр — "nvm.autoSwitch": true — включает автоматическое обнаружение файла .nvmrc при открытии проекта или изменении рабочей директории.

Теперь VS Code будет автоматически находить .nvmrc и переключать версию в интегрированном терминале.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Нужен VPS сервер?

Арендуйте мощный VPS сервер для ваших проектов! Быстрая настройка, высокая производительность и надежная поддержка 24/7. Начните прямо сейчас!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях