NVM: установка и управление версиями Node.js

NVM (Node Version Manager) — это простая POSIX-совместимая bash-утилита для установки и управления несколькими версиями Node.js в одной системе. Она полезна разработчикам, тестировщикам и администраторам, которым нужно запускать разные проекты на разных версиях Node.
Краткие определения:
- NVM: менеджер версий Node.js, реализованный как bash-скрипт.
- LTS: долгосрочная поддержка (Long Term Support).
Основные преимущества
- Лёгкая установка и удаление версий Node.js без системного пакетного менеджера.
- Быстрое переключение между версиями для тестирования и разработки.
- Поддержка алиасов и запуска скриптов под конкретной версией.
1. Подготовка и установка NVM
Перед установкой NVM установите необходимые инструменты сборки и библиотеки для вашей системы.
Для Ubuntu выполните:
sudo apt install build-essential libssl-dev -yДля CentOS используйте:
sudo dnf group install "Development Tools" -yЗатем запустите официальный установщик (в статье используется v0.39.5 как пример):
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
После установки загрузите ваши настройки оболочки (пример для bash):
source ~/.bashrcПроверьте установку:
nvm --version
Важно: если вы используете другую shell (zsh, fish), установщик добавит строку в соответствующий конфигурационный файл; при необходимости вручную проверьте ~/.profile, ~/.bash_profile или ~/.zshrc.
2. Просмотр доступных версий Node.js
Показывает локально установленные версии:
nvm lsПоказывает доступные версии на удалённом репозитории:
nvm ls-remoteПоказывает только LTS-версии:
nvm ls-remote --lts3. Установка версии Node.js
Установить последнюю доступную версию:
nvm install nodeУстановить LTS по алиасу (например, erbium):
nvm install lts/erbium
Установить конкретную версию по номеру:
nvm install v10.17.0
Совет: для новых проектов используйте актуальную LTS-версию; для поддержки старых проектов — фиксируйте точную версию в документации проекта.
4. Переключение между версиями Node.js
Просмотрите список локально установленных версий:
nvm ls
Переключитесь на нужную версию по номеру или по алиасу:
nvm use v12.13.0
nvm use lts/erbium
Замечание: переключение действует только в текущей оболочке. Откройте новую сессию, и будет активна та версия, которая установлена по умолчанию.
5. Алиасы для версий
Алиасы упрощают команду при переключениях. Создайте алиас:
nvm alias node10 v10.17.0
Посмотреть все алиасы:
nvm alias6. Удаление версии Node.js
Чтобы удалить конкретную версию или алиас, используйте:
nvm uninstall v6.17.1
nvm uninstall lts/carbon
nvm uninstall node10
7. Запуск скрипта под указанной версией
Можно выполнить скрипт с конкретной версией без смены текущей сессии:
nvm run lts/erbium app.js
nvm run v12.13.0 app.jsЭто удобно для однократного тестирования приложения под старой или экспериментальной версией Node.
Шпаргалка команд (Cheat Sheet)
- Установить NVM: см. раздел 1.
- Проверить версию nvm: nvm –version
- Список локальных версий: nvm ls
- Список удалённых/доступных: nvm ls-remote
- Установить последнюю версию: nvm install node
- Установить LTS: nvm install –lts или nvm install lts/
- Использовать версию: nvm use <версия|алиас>
- Удалить версию: nvm uninstall <версия|алиас>
- Создать алиас: nvm alias <имя> <версия>
- Запустить файл под версией: nvm run <версия> <файл.js>
Когда NVM может не подойти
- Системные сервисы: если Node запускается как системная служба (systemd) от имени root, лучше устанавливать Node глобально через пакетный менеджер или nodedistro; nvm воздействует только на пользовательскую оболочку.
- Массовые окружения CI: в CI/CD иногда удобнее использовать контейнеры с фиксированным образом Node или менеджеры, интегрированные в пайплайн.
- Ограничения Windows: nvm.sh ориентирован на Unix-подобные системы; для Windows существуют сторонние порты и аналоги (см. альтернативы).
Альтернативы и сравнение
- n (https://github.com/tj/n): простой менеджер версий Node на основе npm; быстрее в некоторых сценариях, но менее гибкий по алиасам.
- Volta (https://getvolta.sh): инструмент, ориентированный на разработчиков, с фокусом на производительность и управление инструментами (node, yarn, npm) на уровне проекта.
- Установка через пакеты дистрибутива или NodeSource: полезно для сервисов и системного использования.
Краткая таблица совместимости:
- NVM: Linux, macOS, WSL. Ограниченно на Windows (нужны порты).
- n: Linux, macOS.
- Volta: Linux, macOS, Windows.
Советы по миграции и совместимости
- Зафиксируйте версию Node в package.json через engines и README проекта.
- Для CI используйте контейнеры с нужной версией Node или настройку менеджера версий на этапе сборки.
- При переходе между менеджерами протестируйте сборку npm/yarn и установку нативных модулей (node-gyp).
Роли и контрольный список
Developer
- Установить nvm в локальном профиле.
- Зафиксировать версию в package.json.
- Создать алиасы для часто используемых версий.
DevOps
- Для сервисов не использовать nvm для системного Node.
- Подготовить контейнеры/artefacts с нужной версией Node.
- Обновлять LTS в тестовом окружении перед продом.
QA
- Тестировать приложение минимум на LTS и на версии, используемой в проде.
- Использовать nvm run для параллельной проверки.
Администратор системы
- Обеспечить наличие инструментов сборки (build-essential, libssl-dev).
- Проверять влияние обновлений Node на сервисы и зависимости.
Краткая методология выбора версии
- Для новых проектов — берите последнюю LTS.
- Для существующих — используйте версию, указанную в package.json.
- Для тестов — запускайте на текущем LTS и на следующей старой LTS для совместимости.
Фактбокс
- Пример установщика в статье использует nvm v0.39.5.
- NVM реализован как shell-скрипт и работает в пользовательской среде (не system-wide).
Критерии приёмки
- NVM должен корректно возвращать nvm –version.
- Установленные версии должны корректно выполняться через nvm use и nvm run.
- Для служб, запускаемых systemd, Node должен быть доступен вне зависимостей nvm.
Безопасность и конфиденциальность
NVM скачивает установочные скрипты из репозитория nvm-sh на GitHub. Перед выполнением установщика проверяйте URL и при необходимости просматривайте содержимое скрипта. Не запускайте непроверенные скрипты под привилегиями root.
Часто задаваемые вопросы
Как проверить текущую активную версию Node?
Выполните команду:
node -vИли используйте nvm ls для списка и указания текущей активной версии.
Как сделать версию по умолчанию?
Установите алиас default:
nvm alias default v14.17.0Работает ли nvm с Yarn?
Да. Yarn будет использовать активную в текущей оболочке версию Node. Установите yarn глобально под нужной версией, если требуется.
Можно ли использовать nvm в CI?
Да, но чаще в CI предпочтительнее применять Docker-образы с нужной версией Node или предварительно установить Node на runner. NVM можно установить как шаг пайплайна, если это приемлемо по времени.
Ресурсы
- Официальный репозиторий NVM: https://github.com/nvm-sh/nvm
Сводка:
- NVM упрощает управление несколькими версиями Node на рабочей станции.
- Используйте nvm для локальной разработки и тестирования; для системных сервисов применяйте системную установку или контейнеры.
- В статье приведена шпаргалка команд, рекомендации по ролям и альтернативы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента