Как управлять версиями Node.js и NPM с помощью NVM?

Среда выполнения Node.js позволяет запускать код на удаленном сервере вместо традиционного исполнения в браузере. И разработчики на JavaScript часто пользуются этим преимуществом, особенно при работе с серверными приложениями.
Для обеспечения надежности и эффективности проектов, а также для упрощения их отладки и проверки кода, важно поддерживать актуальную версию Node.js и NPM. Эту задачу можно выполнить с помощью Node Version Manager (NVM), который позволяет легко переключаться между разными версиями этих инструментов. В данной статье мы рассмотрим, как использовать NVM для управления и оптимизации процесса разработки.
Важно! Статья предназначена для пользователей, которые знают язык JavaScript, а также умеют работать с платформами Node.js и NPM.
Актуальные версии Node.js и NPM
С каждым выпуском Node.js добавляются новые функции и улучшения. Самой актуальной версией является 20.6.0, которая была опубликована 6 сентября 2023 года. Обновленная версия NPM 10.1.0, появилась 11 сентября. Она также включает ряд полезных функций, которые максимально раскрываются при интеграции с Node.js.
NVM в числе прочего позволяет устанавливать обновленные версии обоих продуктов.
Как установить Node Version Manager
Конечно, для того чтобы использовать NVM, сначала его нужно установить. Это делается индивидуально на стороне пользователя, он может адаптировать менеджер под свои конкретные задачи. К тому же, NVM при каждом запуске вызывается заново и может быть настроен под любую программную оболочку. Этот менеджер совместим с различными операционными системами, включая Unix, Windows, macOS и прочие.
Для установки NVM рекомендуется использовать стандартные команды curl или wget:
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash $ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
Функция install.sh загружает NVM напрямую из репозитория на сайте в файл ~/.nvm.
Также для каждой программной оболочки создается отдельный файл профиля:
~/.bash_profile ~/.zshrc ~/.profile ~/.bashrc
Разработчик может выбрать конкретный файл профиля под свои потребности в зависимости от текущей задачи.
Далее в выбранные файлы профиля необходимо добавить указанные строки кода с помощью процедуры export:
export NVM_DIR="$([ -z "$" ] && printf %s "$/.nvm" || printf %s "$/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
В этом фрагменте кода после задания процедуры export осуществляется вставка специфических участков кода из /.nvm в файлы, расположенные в директории NVM_DIR.
Для проверки корректности можно осмотреть добавленные строки в nvm (на примере файла bash_profile):
export NVM_DIR="/Users/fuje/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Если все выполнено правильно, менеджер NVM теперь установлен в вашем проекте и его можно использовать для эффективного управления различными версиями Node.js.
Как пользоваться Node Version Manager
После интеграции NVM в наш проект можно начать применять его возможности на практике. Давайте попробуем установить последнюю версию Node.js с помощью менеджера.
Для этого используем следующую команду:
$ nvm install node Downloading and installing node v20.6.0. Downloading https://nodejs.org/dist/v20.6.0/node-v20.6.0-darwin-x64.tar.xz. ######################################################################## 100.0% Computing checksum with shasum -a 256 Checksums matched! Now using node v20.6.0 (npm v10.1.0)
В данном примере NVM не только загружает последние версии пакета Node с официального сайта (третья строка), но и отображает текущую используемую версию (в конце).
Также можно проверить совместимость версий Node.js и NPM на вашем компьютере:
$ node -v v20.6.0 $ npm -v 10.1.0
Вышеуказанные команды возвращают последнюю установленную версию. То есть в нашем примере это будут актуальные на данный момент Node.js 20.6.0 и NPM 10.1.0.
При необходимость можно таким же образом установить любую доступную версию:
$ nvm install 10.14.0 Downloading and installing node v10.14.0. Downloading https://nodejs.org/dist/v10.14.0/node-v10.14.0-darwin-x64.tar.xz. ######################################################################## 100.0% Computing checksum with shasum -a 256 Checksums matched! Now using node v10.14.0 (npm v6.4.1)
Ее правильное название соответствует стандартной таблице SemVer. А если попытаться загрузить версию, которая уже установлена, NVM уведомит об этом и прекратит операцию:
$ nvm install 10.14.0 v10.14.0 is already installed. Now using node v10.14.0 (npm v6.4.1)
Можно также проверить все версии node.js, имеющиеся в проекте:
$ nvm ls -> v10.14.0 v10.15.0 v10.16.0 v12.16.0 v13.9.0 v15.4.0 v20.6.0 system default -> 12.16.0 (-> v12.16.0) node -> stable (-> v20.6.0) (default) stable -> 15.4 (-> v20.6.0) (default) iojs -> N/A (default) unstable -> N/A (default) lts/* -> lts/fermium (-> N/A) lts/argon -> v4.9.1 (-> N/A) lts/boron -> v6.17.1 (-> N/A) lts/carbon -> v8.17.0 (-> N/A) lts/dubnium -> v10.23.0 (-> N/A) lts/erbium -> v12.20.0 (-> N/A) lts/fermium -> v14.15.1 (-> N/A)
Указатель стрелки (->) отображает текущую используемую версию Node для каждого параметра. Это облегчает управление при наличии множества установленных версий.
С помощью функции nvm use можно быстро переключаться между версиями Node:
$ nvm use 12.16.0 Now using node v12.16.0 (npm v6.14.8) $ nvm use 10.16.0 Now using node v10.16.0 (npm v6.14.5) $ nvm use 13.9.0 Now using node v13.9.0 (npm v6.13.7) $ nvm use default Now using node v12.16.0 (npm v6.14.8) $ nvm use node Now using node v20.6.0 (npm v10.1.0) $ nvm use stable Now using node v20.6.0 (npm v10.1.0)
Здесь в скобках отображается соответствующая версия NPM. Иногда бывает так, что для некоторых более ранних версий Node.js используется более новая NPM.
В примере выше это:
- версия node 10.16.0 использует npm 6.14.5;
- а версия node 13.9.0 использует 6.13.7.
Чтобы синхронизировать версии, можно использовать следующие команды:
$ nvm use 10.16.0 $ npm install -g npm@6.14.5
Также можно просто обновить NPM до последней версии для текущей версии Node.js. Для этого нужно использовать такую команду:
$ nvm install-latest-npm
Это достаточно удобно и эффективно. Перечисленные команды NVM обеспечивают гибкость в управлении версиями Node. Их можно использовать для настройки новых проектов и для оптимизации существующих.
Важно учитывать, что это применимо только к определенной оболочке. При переходе на новую модификации Node отменяются.
Чтобы этого избежать, можно задать версию Node.js по умолчанию (default):
$ nvm alias default 20.6.0
Указанная версия будет единой для всех оболочек.
Рекомендуется сохранять версии в соответствии с SemVer в файле .nvmrc. В итоге команды NVM (install, use, exec, run, which и прочие) автоматически будут использовать версию из этого файла:
$ cat .nvmrc 20.6.0 $ nvm use Found '/Users/fuje/.nvmrc' with version Now using node v20.6.0 (npm v10.1.0)
Для проверки активной версии можно использовать следующую команду:
$ nvm current v20.6.0
Чтобы увидеть полный список доступных версий Node, используйте команду:
$ nvm ls-remote
В результате отобразится полный список выпущенных версий Node – он будет достаточно длинным, так как существующие обновления сохраняются в исходном виде, а к ним постоянно продолжают добавляться все новые и новые версии.
Однако, если указать базовый номер версии, то отобразится список только с ее подверсиями. И он будет содержать значительно меньше позиций:
$ nvm ls-remote 15 v15.0.0 v15.0.1 v15.1.0 v15.2.0 v15.2.1 v15.3.0 v15.4.0
С помощью команды which можно отобразить путь к скачанным версиям и самому NVM:
$ nvm which 10.14.0 /Users/fuje/.nvm/versions/node/v10.14.0/bin/node $ nvm which 10.15.0 /Users/fuje/.nvm/versions/node/v10.15.0/bin/node $ nvm which 10.16.0 /Users/fuje/.nvm/versions/node/v10.16.0/bin/node $ nvm which 10.15 /Users/fuje/.nvm/versions/node/v10.15.0/bin/node $ nvm which 10.12 N/A: version "v10.12" is not yet installed. You need to run "nvm install 10.12" to install it before using it. $ nvm which 10 /Users/fuje/.nvm/versions/node/v10.16.0/bin/node
Это тоже достаточно удобная функция, которая помогает определить, где находится конкретная версия Node.js на вашем компьютере.
Также можно запустить приложение с нужной версией Node:
$ nvm run 10.15.0 app.js
Мы рассмотрели лишь базовые возможности NVM. Вы можете отобразить для просмотра дополнительные функции с помощью команды help:
$ nvm --help
Обновление Node Version Manager
Помимо установки новых версий Node.js и NPM время от времени требуется обновлять и сам NVM. Более новые версии могут обладать улучшенным интерфейсом или иметь дополнительные функции.
Для примера давайте рассмотрим обновление NVM до самой актуальной версии 0.39.5 с помощью команды curl:
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 13527 100 13527 0 0 23046 0 --:--:-- --:--:-- --:--:-- 23083 => nvm is already installed in /Users/fuje/.nvm, trying to update using git => => Compressing and cleaning up git repository => nvm source string already in /Users/fuje/.bash_profile => bash_completion source string already in /Users/fuje/.bash_profile => Close and reopen your terminal to start using nvm or run the following to use it now: export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Ссылка предназначена для загрузки обновленной версии, а указанные папки – для ее установки. Цифры в верхней части отображают параметры загрузки, предоставляя гибкость в управлении процессом.
Чтобы активировать обновленную версию NVM, необходимо перезапустить консоль кода, как указано в инструкциях по установке.
После перезапуска можно проверить результат:
$ nvm --version 0.39.5
Одним из самых значимых обновлений NVM является добавленная возможность настройки цветов команд. Это способствует более яркому и понятному отображению информации на экране, улучшая тем самым удобство работы в Node.js.
nvm set-colors [] Set five text colors using format “yMcBg”. Available when supported. Initial colors are: g b y r e Color codes: r/R = red / bold red g/G = green / bold green b/B = blue / bold blue c/C = cyan / bold cyan m/M = magenta / bold magenta y/Y = yellow / bold yellow / = / e/W = light grey / white
Управлять цветами можно с помощью функции set-colors:
$ nvm set-colors cgYmW
Чтобы показать стандартные цвета, нужно применить команду nvm ls:
[$ nvm 1s v10.14.0 v12.15.0 -> v12.16.0 v13.16.0 v15.9.0 V20.4.0 system default -> 12.16.0 (-> v12.16.0) iojs -> N/A (default) unstable -> N/A (default) node -> stable (-> v15.4.0) (default) stable -> 15.4 (-> v15.4.0) (default) lts/* -> 1ts/fermium (-> N/A) lts/argon -> v5.9.1 (-> N/A) lts/boron -> v7.17.1 (-> N/A) lts/carbon -> v9.17.0 (-> N/A) lts/dubnium -> v11.23.0 (-> N/A) lts/erbium -> v14.20.0 (-> N/A) lts/fermium —> v15.15.1 (-> N/A)
Пользователь может по собственному желанию изменить цвета. Например, вот так:
[$ nvm 1s v10.14.0 v12.15.0 -> v12.16.0 v13.16.0 v15.9.0 V20.4.0 system default -> 12.16.0 (-> v12.16.0) iojs -> N/A (default) unstable -> N/A (default) node -> stable (-> v15.4.0) (default) stable -> 15.4 (-> v15.4.0) (default) lts/* -> 1ts/fermium (-> N/A) lts/argon -> v5.9.1 (-> N/A) lts/boron -> v7.17.1 (-> N/A) lts/carbon -> v9.17.0 (-> N/A) lts/dubnium -> v11.23.0 (-> N/A) lts/erbium -> v14.20.0 (-> N/A) lts/fermium —> v15.15.1 (-> N/A)
Цветной ввод и отображение кода – это полезная функция для профессиональных разработчиков, которая улучшает качество и удобство разработки. Актуальная версия NVM упрощает этот процесс и позволяет создать персонализированный стиль.
Заключение
Все больше опытных разработчиков JavaScript переходят на платформу Node и используют NVM для управления ее обновлениями. Потому что менеджер NVM – это простой инструмент для установки актуальных версий Node.js и NPM. Он позволяет оптимизировать работу в программной среде Node и расширить ее возможности. Кроме того, NVM помогает развивать навыки работы с различными программными оболочками на разных платформах, обеспечивая их совместимость.
Стандартные версии Node.js, которые классифицированы по SemVer, регулярно обновляются и всегда доступны на официальном сайте NVM.
Обновление node.js и npm. Ubuntu
Предполагается, что обновления ставим из под пользователя с ограниченными правами, поэтому добавляется sudo к команде.
Для удобства так же будет установлено маленькое дополнение.
1) Обновляем менеджер пакетов NPM, согласно синтаксиса npm update [name [name . ]]
sudo npm install -g npm
2) Очишаем кеш NPM
sudo npm cache clean -f
3) Установим маленький вспомогательный пакет, под названием ‘n’
sudo npm install -g n
4) Теперь установим последнюю стабильную версию Node.js
sudo n stable
Так же можем установить более новый вариант, указав номер версии Node.js. На момент написания статьи это 7.9.0
sudo n 7.9.0
Полезные команды для работы с Node.js
Перед тем как рассматривать полезные команды при работе с Node.js, её необходимо установить.
Команды помогают узнать версию Node.js,
node -h — показывает список всех доступных команд Node.js.
node -v , node —version — показывает установленную версию Node.js.

npm -h — показывает список всех доступных команд пакетного менеджера npm .

npm -v , npm —version — показывает установленную версию npm .

Команда npm update npm -g позволяет обновить версию npm .

npm list —depth=0 показывает список установленных пакетов.

Команда npm outdated —depth=0 покажет список установленных пакетов, которые требуют обновления. Если все пакеты обновлены, список будет пустым.
npm install package — позволяет установить любой пакет по его имени. Если при этом к команде добавить префикс -g пакет будет установлен глобально на весь компьютер.

Команда npm i package является укороченной альтернативой предыдущей команды.
Если вы хотите установить конкретную версию пакета, воспользуйтесь префиксом @ с номером версии. Например, npm install package@1.0.1 .
npm uninstall package — удаляет установленный пакет по имени.

Команда npm list package — покажет версию установленного пакета, а команда npm view package version — последнюю версию пакета, которая существует.
Для работы с пакетным менеджером также пригодится файл package.json , который должен лежать в директории, с которой происходит работа в консоли.

Он содержит различные мета-данные, например, имя проекта, версия, описания и автор. Также он содержит список зависимостей, которые будут установлены, если вызвать из этой папки команду npm install .
Кроме этого он ещё имеет скрипты, которые вызывают другие команды консоли. Например, для этого файла вызов команды npm start вызовет запуск задачи Grunt с именем dev . А команда npm run build вызовет скрипт build , который запустит задачу в Grunt с именем build .
Во время работы часто возникает необходимость установить некоторые пакеты. Если установить пакет с префиксом —save , то он автоматически запишется в package.json в раздел dependencies . Такая же команда с префиксом —save-dev запишет пакет в раздел devDependencies .
nvm (илиNode Version Manager) — утилита, которая позволяет быстро менять версии Node.js.
Чтобы её установить, достаточно запустить скрипт
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
Теперь можно установить последнюю версию Node.js, например, 5.0 с помощью команды nvm install 5.0 . Чтобы начать использовать её, введите команду nvm use 5.0 . Таким образом, можно быстро переключаться между версиями, например, для тестирования.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Установка Node.js в Windows
Если вы не занимались разработкой с помощью Node.js и хотите быстро начать работу, установите Node.js непосредственно в Windows, выполнив указанные ниже действия.
Если вы используете Node.js профессионально и вам нужно оптимизировать скорость и производительность, обеспечить совместимость системных вызовов, выполнять контейнеры Docker, которые используют рабочие области Linux, и не нужно использовать скрипты сборки Linux и Windows или вы просто предпочитаете использовать командную строку Bash, установите Node.js в подсистеме Windows для Linux (точнее, в WSL 2).
Установка nvm-windows, Node.js и npm
Наряду с возможностью выбора системы для разработки (Windows или WSL) при установке Node.js доступны и другие возможности. Мы рекомендуем использовать диспетчер версий, так как версии меняются достаточно быстро. Вероятно, вам придется переключаться между несколькими версиями Node.js в зависимости от потребностей для различных проектов, над которыми вы работаете. Диспетчер версий Node Version Manager, чаще называемый nvm, является наиболее популярным средством установки нескольких версий Node.js, но он доступен только для Mac и Linux и не поддерживается в Windows. Вместо этого мы рекомендуем установить средство nvm-windows, а затем с его помощью установить Node.js и диспетчер Node Package Manager (npm). Существуют также альтернативные диспетчеры версий, которые описаны в следующем разделе.
Рекомендуем всегда удалять любые имеющиеся установки Node.js или npm из операционной системы перед установкой диспетчера версий, так как эти установки могут создавать необычные и запутанные конфликты. Сюда относится удаление всех существующих каталогов установки Node.js (например, C:\Program Files\nodejs), которые могут остаться. Созданная символьная ссылка NVM не будет перезаписывать существующий (даже пустой) каталог установки. Справку по полному удалению предыдущих установок см. здесь.
NVM предназначен для установки на пользователя и вызова для каждой оболочки. Он не предназначен для общих полей разработчика или серверов сборки с несколькими агентами сборки. NVM работает с помощью символьной ссылки. Использование nvm в общих сценариях создает проблему, так как эта ссылка указывает на папку данных приложения пользователя, поэтому если пользователь x выполняется nvm use lts , ссылка будет указывать узел для всего поля в папку данных приложения. Если пользователь y запускает узел или npm, он будет направлен на запуск файлов в учетной записи пользователя x и в случае, если npm -g они будут изменять файлы x, которые по умолчанию не разрешены. Поэтому nvm назначается только для одного поля разработчика. Это также относится к серверам сборки. Если два агента сборки находятся на одной виртуальной машине или коробке, они могут конкурировать и вызывать нечетное поведение в сборках.
- Следуйте инструкциям по установке, приведенным в репозитории windows-nvm. Мы рекомендуем использовать установщик, но если вы лучше понимаете свои потребности, возможно, целесообразным будет выполнить установку вручную. Установщик перенаправит вас на страницу выпусков с информацией о последней версии.
- Скачайте последний выпуск файла nvm-setup.zip.
- После скачивания откройте ZIP-файл, а затем запустите файл nvm-setup.exe.
- Мастер установки Setup-NVM-for-Windows поможет выполнить все этапы установки, в том числе выбрать каталог, в котором будут установлены репозиторий nvm-windows и Node.js.

- Установка завершится. Откройте PowerShell (рекомендуется открыть с повышенными правами администратора) и попробуйте использовать windows-nvm, чтобы указать, какие версии узла сейчас установлены (на этом этапе они не указаны): nvm ls

- Установите текущий выпуск Node.js (в нем вы сможете протестировать новейшие улучшенные возможности, но вероятность возникновения проблем при этом будет больше, чем при использовании версии LTS) с помощью команды nvm install latest .
- Установите последний стабильный выпуск LTS Node.js (рекомендуется). Для этого сначала выполните поиск номера текущей версии LTS с помощью команды nvm list available , а затем установите версию LTS по номеру с помощью команды nvm install (замените номером, например: nvm install 12.14.0 ).

- Вызовите список установленных версий Node, выполнив команду nvm ls . Теперь в нем должны отображаться две недавно установленные версии.

- После установки требуемых версий Node.js выберите нужную версию, введя nvm use (замените нужным номером, например nvm use 12.9.0 ).
- Чтобы изменить версию Node.js на ту, которую вы хотите использовать для проекта, создайте каталог проекта с помощью команды mkdir NodeTest и укажите каталог, выполнив команду cd NodeTest . Затем введите nvm use , заменив номером версии, который вы хотите использовать (т. е. версии 10.16.3).
- Проверьте, какая версия npm установлена, с помощью npm —version . Этот номер версии автоматически изменится на номер той версии npm, которая связана с вашей текущей версией Node.js.
Альтернативные диспетчеры версий
Несмотря на то что windows-nvm сейчас является самым популярным менеджером версий для Node, есть несколько альтернативных вариантов:
- nvs (Node Version Switcher) — это кроссплатформенный вариант nvm с возможностью интеграции с VS Code.
- Volta — это новый диспетчер версий, созданный командой LinkedIn. Заявлено, что он отличается увеличенной скоростью и межплатформенной поддержкой.
Чтобы установить Volta в качестве диспетчера версий (вместо windows-nvm), перейдите в раздел Установка Windows руководства Начало работы, затем скачайте и запустите установщик Windows, следуя инструкциям.
Перед установкой Volta необходимо убедиться, что на компьютере с Windows включен режим разработчика.
Дополнительные сведения об использовании Volta для установки нескольких версий Node.js в Windows см. в документации по работе с Volta.
Установка Visual Studio Code
Рекомендуется установить Visual Studio Code для разработки с помощью Node.js в Windows. Дополнительные сведения см . в руководстве Node.js в Visual Studio Code.
Альтернативные редакторы кода
Если вы предпочитаете использовать редактор кода или интегрированную среду разработки, отличные от Visual Studio Code, для среды разработки Node.js также подходят следующие варианты:
Установка GIT
Если вы планируете работать совместно с другими пользователями или размещать проект на сайте с открытым исходным кодом (например, GitHub), примите во внимание, что VS Code поддерживает управление версиями с помощью Git. Вкладка системы управления версиями в VS Code отслеживает все изменения и содержит общие команды Git (добавление, фиксация, принудительная отправка, извлечение) прямо в пользовательском интерфейсе. Сначала необходимо установить Git для включения панели управления версиями.
- Скачайте и установите Git для Windows с веб-сайта git-scm.
- В комплект входит мастер установки, который задает вам ряд вопросов о параметрах установки Git. Рекомендуется использовать все параметры по умолчанию, если у вас нет конкретной причины изменить какой-либо из них.
- Если вы никогда не использовали Git, обратитесь к руководствам по GitHub. Они помогут вам приступить к работе.
- Мы рекомендуем добавлять GITIGNORE-файл в проекты Node. На сайте GitHub вы можете найти GITIGNORE-шаблон по умолчанию для Node.js.
Использование подсистемы Windows для Linux в рабочей среде
Использование Node.js напрямую в Windows отлично подходит для обучения и экспериментов с возможностями. Когда вы будете готовы создавать готовые к работе веб-приложения, которые обычно развертываются на сервере под управлением Linux, мы рекомендуем использовать подсистему Windows для Linux версии 2 (WSL 2) для разработки веб-приложений Node.js. Многие пакеты и платформы Node.js создаются с помощью среды *nix, а большинство приложений Node.js развертываются в Linux, поэтому разработка в WSL обеспечивает согласованность между средой разработки и рабочей средой. Дополнительные сведения о настройке среды разработки WSL см. в статье Настройка среды разработки Node.js в подсистеме Windows для Linux версии 2.
В достаточно редкой ситуации, когда вам требуется разместить приложение Node.js на сервере Windows, лучше использовать обратный прокси-сервер. Это можно сделать двумя способами: 1) с помощью iisnode или напрямую. Эти ресурсы не поддерживаются. Мы рекомендуем использовать серверы Linux для размещения приложений Node.js.