# NodeJS – управление версиями

В Ruby есть два основных способа управлять активными версиями языка: **rbenv** и **rvm**. Их использование позволяет значительно упрощать установку/обновление Ruby на локальную машину и одновременно использовать несколько версий языка в различных проектах.

Как оказалось, в NodeJS есть нечто подобное.

### N

[N](https://github.com/tj/n "tj/n") – Node version management. Для установки требует, чтобы на машине уже стояла NodeJS с пакетным менеджером npm. А дальше все просто:

```shell
$ npm install -g n
```

Для установки нескольких версий NodeJS используются команды:

```shell
$ n 0.8.14
$ n 0.8.17
$ n 0.9.6
```

Для переключения между ними запускаем менеджер и выбираем из списка требуемую версию:

```shell
$ n

  0.8.14
ο 0.8.17
  0.9.6
```

Для удаления используется команда `rm`:

```shell
$ n rm 0.9.4 v0.10.0
```

Преимущества данного менеджера версий в том, что устанавливаются бинарные пакеты, то есть не нужно на локальной машине ничего компилировать. Недостатком же является то, что для того, чтобы его использовать, нужно предварительно установить NodeJS.

### NVM

[NVM](https://github.com/creationix/nvm "Node Version Manager") – Node Version Manager. Для установки требуется наличия на локальной машине GIT и C++ компилятора. На OSX для этого достаточно установить XCode, а для Ubuntu установим два пакета:

```shell
$ sudo apt-get install build-essential libssl-dev
```

Теперь устанавливаем сам nvm:

```shell
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.17.3/install.sh | bash
```

или с помощью wget:

```shell
$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.17.3/install.sh | bash
```

По завершении данной операции рекомендуют закрыть окно терминала и открыть его вновь. Но вполне достаточно провести чтение файла конфигурации bash/zsh:

```shell
$ source ~/.zshrc
```

После чего становиться доступной для работы команда nvm. Для установки последней стабильной версии NodeJS используется команда:

```shell
$ nvm install 0.10
```

или же используя алиас:

```shell
$ nvm install stable
```

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

```shell
$ nvm ls
```

Для просмотра доступных для установки версий:

```shell
$ nvm ls-remote
```

Чтобы использовать определенную версию NodeJS по умолчанию, задаем алиас:

```shell
$ nvm alias default stable
```

Для того, чтобы запустить проект под определенной версией NodeJS:

```shell
$ nvm exec 0.9 node --version
```

Преимущества nvm в том, что для его использования на компьютере достаточно иметь только GIT и C++, что в случае с OSX или Linux не представляет проблем. С его помощью очень просто управлять установленными версиями NodeJS.

Недостатком является то, что как и в N, нет возможности явно указать, какую версию NodeJS использовать в определенном проекте.

