Туториал по Node Version Manager (NVM)

Если вы создаете Node.js приложения, вам могут понадобится разные версии Node.js. К счастью есть легкий способ для установки и управления любых версий на одной машине — и это Node Version Manager. В этой статье описаны все команды которые понадобятся вам для смены версии Node.js без лишних усилий.

Что такое Node.js?

Node.js это среда выполнения JavaScript с открытым исходным кодом, в основном используется для написания веб-серверов, сайтов или RESTful API. Его базовая функциональность поддерживается модулями которые базируются на API, спроектированом так что бы сделать написание серверных приложения легче. Node.js приложения можно запускать на разных платформах: Linux, macOS и Windows, а также они могут быть написаны на любом языке который компилируется в JavaScript, например таких как CoffeeScript, Dart и TypeScript.

Node.js похож на PHP, но существует несколько значительных различий . В PHP, функции блокирует поток выполнения пока не выполнятся, что означает что может выполнятся только одна команда подряд. В Node.js существует возможность выполнять операции IO, запросы в базу асинхронно.

Обновления версий Node.js

Новый релиз Node.js выполняется раз в полгода с master ветки в GitHub, примерно в Апреле и Октябре. Когда выходит новая версия с нечетным номером, самые новые версии с четными номерами стают long-term support (LTS). Версии до LTS получают активную поддержку на 18 месяцев, а потом ще 12 месяцев технической поддержки. В тоже время активные версии получают non-breaking бэкпорты с любыми изменениями реализованными в самой последней версии несколько недель после релиза.

Что такое Node Version Manager (NVM)?

Node Version Manager — єто утилита что позволяет без проблем переключаться между разными версиями Node. Вы можете установить любую версию одной командой и установить версию по умолчанию через интерфейс командной строки.

Какие операционные системы поддерживает Node Version Manager ?

NVM был первоначально разработанный для Linux и OS X, но также существует проект NVM Windows https://github.com/coreybutler/nvm-window. Хотя существуют незначительные отличия, базовые команды для установки, просмотра и переключения версий Node.js идентичны, кроме случаев описанных ниже.

Установка NVM на OS X и Linux

Сначала, удостоверьтесь в том что утилита совместима с вашей версией операционной системы. Также технически вам не нужно удалять уже установленый Node, но лучше сделать это, кроме того, нужно удалить любые прежнюю версию npm.
C++ компилятор необходим для поддержки версий предшествующий 0.8.6. Даже если вы обычно работаете только с LTS или более современными релизами, вы все де можете установить компилятор C++. Если вы у вас OS X, ваш лучший выбор это Xcode. Чтобы установить его выполните следующую команду:

xcode-select --install

Если вы используете Linux, выполните следующую команду, чтобы установить build-essential package вместе с Advanced Package Tool:

sudo apt-get update
sudo apt-get install build-essential

После этого, вы можете установить Node Version Manager используя cURL или Wget. Для cURL выполните следующую команду:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

Для Wget выполните следующую команду:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

Перед установкой узнайте последнюю достпную версия NVM https://github.com/creationix/nvm/releases. На данный момент последняя версия v0.33.11. команды выше клонируют репозиторий в ~/.nvm и применят изменения для вашего bash профиля, так что вы сможете иметь доступ к Node Version Manager где-угодно в вашем терминале.

Установка NVM на Windows

Перед тем как вы начнете, удалите существующую версию Node.js, чтобы избежать потенциальных проблем во время установки. Дальше скачайте с Github nvm-setup.zip https://github.com/coreybutler/nvm-windows/releasesю Послее того как откорете его просто следуйте инструкциям для заверешнния установки.

Как использовать NVM

Есть несколько важных вещей которые нужно знать чтобы использовать NVM эффективно, ниже они будут описаны и будут приведены примеры как делать определенные задачи.

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

Менеджер версий делает установку разных версий Node.js очень простой с помощью одной команды. Просто запустите команду install и передайте ей параметром необходимую версию. Например, если вы хотите установить Node.js версии v6.5.0, выполните следующую команду:

nvm install v6.5.0

Так как утилита следует SemVer, вы можете устанавливать патчи командой install с аргументом номера патча. Для получения списка доступных версий в Linux и OS X, выполните:

nvm ls-remote

Если вы используете Windows, выполните следующую команду:

nvm ls available

Если вам нужно удалить екземпляр Node, просто выполните nvm uninstall c нужным номером версии.

Глобальные npm пакеты

Стоит заметить то что глобально установленный npm пакеты не разделяются между разными версиями Node.js, потому что они могут причинить проблемы несовместимости. Поэтому, Node Version Manager одновременно устанавливает совместимую версию npm каждый раз когда вы устанавливаете какую то версию Node.js. Так как каждый экземпляр Node имеет собственную версию npm, вы можете запустить npm -v что-бы проверить какая версия сейчас используется. Также не нужно иметь sudo права при установке глобальных пакетов. Если вы хотите переустановить глобальные npm пакеты для определенной версии Node.js или при ее установке, сделайте так:

nvm install v6.5.0 --reinstall-packages-from=4.2

Команда выше устанавливает Node 6.5.0 и необходимую npm, потом переустанавливает все установленные пакеты в версии 4.2

Алиасы

Что облегчить процесс смены версий, NVM позволяет использовать псевдонимы для определения версий без указания номера. Примеры стандартных алиасов:
— node: устанавливает самую последнюю стабильную версию Node.js
— unstable: устанавливает самую последнюю стабильную версию Node.js
— iojs: устанавливает самую последнюю стабильную версию io.js

Для установки последней стабильной версии Node.js выполните следующую команду

nvm install node

Также существует алиас по умолчанию. Для установки версии по умолчанию используйте такую команду

nvm alias default node

Кроме того, вы можете создавать собственные алиасы:

nvm alias with-async-await 8.1.0
nvm use with-async-await

Для удаления алиаса, выполните команду unalias:

nvm unalias with-async-await

Переключения между версиями Node.js

Каждый раз как вы устанавливаете новую версию Node.js, она будет автоматически выбираться для использования. Для переключения между версиями используется команда, nvm use которая работает почти также как и команда install. Например если вы хотите переключиться на последнюю стабильную версию, выполните команду

nvm use node

Для получения списка всех установленных версий Node, используется команда nvm ls:

nvm ls

Активная версия будет помечена зеленым цветом и стрелочкой, также текущую версию можно получить с помощью команды:

nvm current

Дополнительные команды

— Существует несколько дополнительных команд, которые могут вам когда-нибудь понадобиться. Чтобы запустить команду для установленной версии без переключений переменных node, используйте такой формат

nvm run 8.11.4 --version

— чтобы задать определенную версию при запуске команда в саб-терминале, выполните такую команду

nvm exec 8.11.4 node --version

— если вы хотите узнать путь к исполняемым файлам Node.js для какой-то версии Node, используйте следующий формат

nvm which 8.11.4
 

— Также вы можете назначить желаемую версию Node.js для ваших проектов, создав .nvmrc файлы в репозитории проектов. Существует плагин avn https://github.com/wbyoung/avn, который позволяет автоматичски переключпаться между версиями при смене директорий.

Преимущества использования Node Version Manager

Кроме экономии времени и усилий, возможность переключения между версиями Node имеет еще несколько значительных выгод. Например, например если вы хотите проверить работу некоторого пакета на определенной версии Node, или если вам нужно воспроизвести баг на нужной версии, NVM позволяет быстро переключиться и сделать отладку.

Заключение

Знание, как правильно использовать Node Version Manager, может помочь сохранить много времени, которое всегда ценно для разработчиков.