
Node Version Manager (nvm): удобное управление версиями Node.js
Node Version Manager, или nvm — это инструмент, который существенно упрощает работу с разными версиями Node.js. Если вы разработчик на Node.js, то знаете, как важно быстро переключаться между версиями для разных проектов. nvm решает эту задачу максимально просто и эффективно — в командной строке.
Что такое nvm и зачем он нужен
nvm — это менеджер версий Node.js, который устанавливается для каждого пользователя и вызывается в рамках каждого сеанса shell. Инструмент работает на любой POSIX-совместимой оболочке (bash, zsh, sh, dash, ksh) и доступен для систем Unix, macOS, а также для Windows через WSL.
Основные возможности:
- Лёгкая установка и переключение между версиями Node.js
- Поддержка установки любой конкретной версии, а также последних стабильных и LTS-версий
- Возможность создавать алиасы для версий Node.js
- Установка нужной версии из
.nvmrc
файла проекта — автоматический выбор версии для текущей директории - Перенос глобально установленных npm пакетов с одной версии на другую
- Удобная интеграция с bash, zsh и даже fish (через сторонние инструменты)
- Скачивание бинарных файлов или сборка Node.js из исходников
- Возможность установки нескольких параллельных версий io.js, которые долгое время шли параллельно с Node.js
Таким образом nvm позволяет работать с разными Node.js версиями так же просто, как с разными ветками в git — переключение занимает секунды.
Как установить и начать работать с nvm
Установка nvm сводится к выполнению одной команды в терминале:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
Или аналог с wget. Скрипт сам скачает репозиторий nvm в ~/.nvm
, обновит конфигурации shell и позволит начать использовать nvm сразу после перезапуска терминала (или прогрузки профиля).
Как использовать nvm: фундаментальные команды
nvm install <версия>
— скачивает и устанавливает указанную версию Node.js, напримерnvm install 14.17.0
nvm use <версия>
— переключает текущую сессию на выбранную версию Node.jsnvm ls
— показывает локально установленные версииnvm ls-remote
— показывает доступные для установки версии Node.js и io.jsnvm alias <имя> <версия>
— создание алиаса для удобства переключенияnvm uninstall <версия>
— удаление установленной версии Node.js
Пример типичной работы:
$ nvm install 16
$ nvm use 16
$ node -v
v16.9.1
$ nvm use 14
$ node -v
v14.18.0
Так вы в несколько команд быстро переключаетесь между версиями.
Интеграция с проектами: автоматический выбор версии node
с помощью .nvmrc
Очень удобный фичей nvm является поддержка файла .nvmrc
— в корне проекта создаёте текстовый файл с номером версии Node.js, которую нужно использовать. При заходе в директорию и вызове команды nvm use
nvm прочитает эту версию и переключится автоматически.
Например:
echo "14.17.0" > .nvmrc
nvm use
Для большей автоматизации можно добавить в конфигурацию shell функцию, которая будет автоматически переключать версию при смене директории.
Работа с LTS и глобальными пакетами
Node.js имеет долгосрочную поддержку (LTS) — nvm полностью поддерживает установку именно этих версий:
nvm install --lts
При установке можно автоматически переустановить глобально установленные npm-пакеты из текущей версии:
nvm install --reinstall-packages-from=current 14
Это избавляет от необходимости каждый раз по новой ставить важные инструменты и библиотеки.
Особенности и проблемы при использовании
- nvm не требует
sudo
для установки глобальных npm-пакетов, работает с пользователем - На macOS и Windows (через WSL) могут возникать нюансы с конфигурацией shell, для которых есть подробные инструкции
- На Alpine Linux пришлось настроить процесс установки вручную из-за особенностей libc (
musl
) - nvm не поддерживает Fish shell напрямую, но есть расширения сторонних разработчиков
- Для Apple Silicon Mac есть рекомендации по установке старых версий Node.js через Rosetta
Все эти особенности подробно описаны в документации проекта.
Почему nvm полезен разработчику
- Гибкость. Легко тестировать код на разных версиях Node.js без установки всего несколько раз вручную.
- Чистота. Каждая версия изолирована, пакеты не смешиваются, что предотвращает конфликты.
- Автоматизация. Использование
.nvmrc
для авто-подбора версии в проекте избавляет от ошибок. - Кроссплатформенность. Поддерживаются Unix-подобные системы и Windows с WSL.
- Широкая поддержка версий. Можно устанавливать от самых старых старых до самых новых версий Node.js и io.js.
Итог
Если вы постоянный пользователь Node.js или работаете с множеством проектов с разными требованиями к версиям, nvm — инструмент обязательный к использованию. Он экономит время, избавляет от рутинных манипуляций и делает управление средой разработки прозрачным и надёжным.