При разработке приложений Node.js вы можете столкнуться с ситуациями, когда вам нужно установить несколько версий Node. Это может произойти, если у вас есть несколько проектов и у них разные требования, или у вас есть развертываемое приложение, которое должно быть совместимо с разными версиями Node. Без хорошего инструмента это означало бы много работы и усилий, чтобы установить разные версии вручную и основать проект на конкретной версии. К счастью, есть лучший способ!
Представляем nvm
nvm означает Node Version Manager. Как следует из названия, это помогает вам легко управлять различными версиями Node и переключаться между ними. Он предоставляет интерфейс командной строки, где вы можете устанавливать разные версии одной командой, устанавливать настройки по умолчанию, переключаться между ними и многое другое.
Поддержка ОС
nvm поддерживает как Linux, так и macOS, но это не значит, что пользователи Windows должны пропустить. Есть второй проект под названием nvm-windows, который предлагает пользователям Windows возможность легко управлять средами Node. Несмотря на название, nvm-windows не является клоном nvm и не связан с ним. Однако перечисленные ниже основные команды (для установки, вывода списка и переключения между версиями) должны работать как для nvm, так и для nvm-windows.
Установка
Давайте сначала рассмотрим установку для Windows, MacOS и Linux.
Windows
Во-первых, убедитесь, что вы удалили любую версию Node.js, которая может быть в вашей системе, поскольку они могут конфликтовать с установкой. После этого скачайте последний стабильный установщик . Запустите исполняемый установщик, следуйте инструкциям, и все готово!
MacOS / Linux
Удаление предыдущих установок Node необязательно, хотя рекомендуется делать это. Есть много хороших онлайн-ресурсов о том, как вы можете это сделать ( macOS , Linux ). Также хорошо, если вы удалите все установки npm, которые у вас могут быть, поскольку они могут конфликтовать с установкой nvm. Вам также необходимо установить компилятор C ++ в вашей системе. Для macOS вы можете установить инструменты командной строки Xcode. Вы можете сделать это, выполнив следующую команду:
xcode-select --install
В Linux вы можете установить пакет build-essential, выполнив следующее (предполагается, что apt ):
sudo apt-get update sudo apt-get install build-essential
Имея необходимый компилятор C ++, вы можете установить nvm с помощью cURL или Wget. На вашем терминале запустите следующее:
С помощью cURL :
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
Или с Wget :
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
Обратите внимание, что номер версии (v0.33.8) будет меняться по мере развития проекта, поэтому стоит проверить соответствующий раздел домашней страницы проекта, чтобы найти самую последнюю версию.
Это клонирует репозиторий nvm в ~/.nvm
и внесет необходимые изменения в ваш профиль bash, чтобы nvm
был доступен из любой точки вашего терминала.
Вот и все, nvm установлен и готов к использованию.
Используя nvm
При правильной nvm
команда nvm
доступна в любом месте вашего терминала. Давайте посмотрим, как использовать его для управления версиями Node.js.
Установите несколько версий Node.js
Конечно, одна из самых важных частей nvm — это установка разных версий Node.js. Для этого nvm предоставляет nvm install
. Вы можете установить определенные версии, выполнив эту команду, а затем нужную версию. Например:
nvm install 8.9.4
Запустив вышеизложенное в терминале, nvm установит Node.js версии 8.9.4. nvm следует SemVer , поэтому, если вы хотите установить, например, последний патч 8.9, вы можете сделать это, выполнив:
nvm install 8.9
Затем nvm установит Node.js версии 8.9.X, где X — самая высокая из доступных версий. На момент написания статьи это 4, поэтому в вашей системе будет установлена версия 8.9.4. Вы можете увидеть полный список доступных версий, запустив:
nvm ls-remote
Для nvm-окон это:
nvm ls available
НПМ
При установке экземпляра Node.js nvm также установит совместимую версию npm . Каждая версия Node может иметь свою версию npm, и вы можете запустить npm -v
чтобы проверить, какую версию вы используете в данный момент. Установленные в глобальном масштабе пакеты npm не являются общими для разных версий Node.js. Это может привести к несовместимости. Скорее, они устанавливаются вместе с текущей версией Node в ~/.nvm/versions/node/<version>/lib/node_modules
. Это дает дополнительное преимущество: пользователям не требуются права sudo для установки глобальных пакетов.
К счастью, при установке новой версии Node.js вы можете переустановить глобальные пакеты npm из определенной версии. Например:
nvm install v9.0.0 --reinstall-packages-from=8.9
Запустив вышеизложенное, nvm установит Node.js версии 9.0.0, соответствующую версию npm, и переустановит пакеты npm, которые вы установили в версии 8.9.
Чтобы помочь еще дальше, nvm имеет несколько псевдонимов, которые вы можете использовать для таргетирования версий без написания конкретной версии:
-
node
: это устанавливает последнюю версию Node.js -
unstable
: устанавливается версия Node.js 0.11, которая является последней нестабильной версией.
Итак, чтобы установить последнюю версию Node.js, вы можете просто запустить:
nvm install latest
Вы также можете удалить любой экземпляр, который вы больше не считаете полезным, запустив:
nvm uninstall 0.11
Переключение между версиями
До сих пор мы видели, как устанавливать разные версии Node. Давайте теперь рассмотрим, как переключаться между ними. Позвольте мне сначала отметить, что когда новая версия установлена, она автоматически используется. Поэтому, если вы установите последнюю версию Node.js и сразу после этого запустите node -v
, вы увидите вывод последней версии.
Для переключения между установленными версиями nvm предоставляет команду nvm use
. Это работает аналогично команде установки. Итак, вы должны следовать за этим номером версии или одним из псевдонимов.
Следуя указанным выше командам установки, вы можете:
-
перейти на Node.js версии 8.9.4:
```bash nvm use 8.9.4 ```
-
перейти на Node.js версии 9.3.0:
```bash nvm use 9.3 ```
-
перейти на последнюю версию Node.js:
```bash nvm use node ```
-
перейти на последнюю версию LTS Node.js:
```bash nvm use node --lts ```
При переключении на другую версию nvm сделает экземпляр node
в вашей терминальной символической ссылке на соответствующий экземпляр Node.js.
Вы также можете создавать собственные псевдонимы помимо тех, которые поставляются с nvm. Например, запустив:
nvm alias awesome-version 8.9.4
Вы устанавливаете псевдоним с именем «awesome-version» для Node.js версии 8.9.4. Итак, если вы сейчас запустите:
nvm use awesome-version
nvm переключит node
на версию 8.9.4. Вы можете удалить псевдоним, выполнив:
nvm unalias awesome-version
Вы также можете установить экземпляр по умолчанию для использования в любой оболочке, указав для версии псевдоним «по умолчанию», например:
nvm alias default node
Обратите внимание на io.js
Начиная с Node.js v4, все функции io.js были объединены в проект Node.js. io.js
больше не разрабатывается.
Список установленных экземпляров
В любое время вы можете проверить, какие версии вы установили, запустив:
nvm ls
Это покажет что-то похожее на следующее:
Запись зеленого цвета со стрелкой слева — это текущая используемая версия. Под зеленым и синим списком есть список доступных псевдонимов. Если вы сейчас выполните:
nvm use node nvm ls
Он будет отображать:
Вы также можете проверить, какая текущая версия используется командой:
nvm current
Укажите версию узла на основе проекта
Менеджеры версий, такие как rbenv, позволяют вам указывать версию Ruby для каждого отдельного проекта (записывая эту версию в файл .ruby-version
в вашем текущем каталоге). Это возможно с nvm в том смысле, что если вы создаете файл .nvmrc
внутри проекта и указываете номер версии, вы можете nvm use
каталог проекта и ввести nvm use
. Затем nvm прочитает содержимое файла .nvmrc
и будет использовать любую версию Node, которую вы укажете.
Если для вас действительно важно, чтобы это происходило автоматически, есть проект ( avn ), который интегрируется с nvm и предназначен для удовлетворения этой потребности.
Другие команды nvm
Существуют другие команды, которые предоставляет nvm, которые являются более продвинутыми или не очень распространенными:
-
Выполнение команды непосредственно для установленной версии без переключения переменной
node
:```bash nvm run 8.9.4 --version ```
-
Выполнение команды на вложенной оболочке, нацеленной на конкретную версию:
```bash nvm exec 8.9.4 node --version ```
-
получить путь к исполняемому файлу Node.js определенной установленной версии:
```bash nvm which 8.9.4 ```
Вывод
nvm — отличный инструмент для любого разработчика Node.js. Это позволяет беспроблемную установку и переключение между различными версиями, экономя время на то, что действительно важно.
Благодарственное письмо Тиму Касвеллу, создателю nvm, и Кори Батлеру за поддержку nvm для Windows и, конечно же, вкладчикам этих замечательных проектов. Ваша работа высоко ценится сообществом Node.js.
А что насчет тебя? Вы используете NVM? Как ваш опыт был с этим? Хотелось бы услышать от вас в комментариях ниже.
Эта статья была рецензирована Тимом Севериеном . Спасибо всем рецензентам SitePoint за то, что сделали контент SitePoint как можно лучше!