NVM – Установка нескольких версий Node.js в Linux

Менеджер версий Node (сокращенно NVM) – это простой скрипт командной строки для управления несколькими активными версиями node.js на вашей системе Linux. Он позволяет устанавливать несколько версий node.js и просматривать все доступные для установки и установленные версии на вашей системе.

Nvm также поддерживает запуск определенной версии node.js и может показать путь к исполняемому файлу, куда он был установлен, и многое другое.

В этой статье мы объясним, как установить Менеджер версий Node (NVM) для управления несколькими активными версиями node.js на вашем дистрибутиве Linux.

Установка NVM (менеджера версий Node) в Linux

Чтобы установить или обновить nvm на вашем дистрибутиве Linux, вы можете скачать скрипт автоматической установки с помощью утилит командной строки curl или wget, как показано ниже.

# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
OR
# wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

Указанный выше автоустановочный скрипт клонирует репозиторий nvm в ~/.nvm в вашем домашнем каталоге и добавляет необходимые команды источника в ваши сценарии запуска оболочки, т. е. ~/.bash_profile, ~/.zshrc, ~/.profile или ~/.bashrc, в зависимости от программы оболочки, которую вы используете, как показано в следующем выводе.

Install NVM in Linux
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15916  100 15916    0     0  34227      0 --:--:-- --:--:-- --:--:-- 34301
=> Downloading nvm from git to '/root/.nvm'
=> Cloning into '/root/.nvm'...
remote: Enumerating objects: 359, done.
remote: Counting objects: 100% (359/359), done.
remote: Compressing objects: 100% (305/305), done.
remote: Total 359 (delta 40), reused 168 (delta 28), pack-reused 0
Receiving objects: 100% (359/359), 219.46 KiB | 6.86 MiB/s, done.
Resolving deltas: 100% (40/40), done.
* (HEAD detached at FETCH_HEAD)
  master
=> Compressing and cleaning up git repository

=> Appending nvm source string to /root/.bashrc
=> Appending bash_completion source string to /root/.bashrc
=> You currently have modules installed globally with `npm`. These will no
=> longer be linked to the active version of Node when you install a new node
=> with `nvm`; and they may (depending on how you construct your `$PATH`)
=> override the binaries of modules installed with `nvm`:
...

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

$ source ~/.bashrc
OR
$ source ~/.profile

Затем проверьте, был ли nvm установлен в вашей системе, используя следующую команду.

# command -v nvm

nvm

Она покажет вывод «nvm», если установка прошла успешно.

Установка нескольких версий Node.js с использованием NVM

Теперь пришло время узнать, как использовать менеджер версий Node в Linux. Чтобы загрузить, скомпилировать и установить последнюю версию node, выполните следующую команду:

# nvm install node 

Обратите внимание, что в указанной выше команде “node” является псевдонимом для последней версии.

Install Latest Node Version in Linux
Downloading and installing node v20.0.0...
Downloading https://nodejs.org/dist/v20.0.0/node-v20.0.0-linux-x64.tar.xz...
########################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v20.0.0 (npm v9.6.4)
Creating default alias: default -> node (-> v20.0.0)

Чтобы установить определенную версию “node”, сначала перечислите доступные версии node, а затем установите версию, как показано.

# nvm ls-remote
# nvm install 19.0.0  
Install Specific Node Version in Linux
Downloading and installing node v19.0.0...
Downloading https://nodejs.org/dist/v19.0.0/node-v19.0.0-linux-x64.tar.xz...
########################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v19.0.0 (npm v8.19.2)

После установки версии Node.js с использованием nvm, теперь система должна указывать на версии Node.js и npm в рамках nvm. Можно проверить расположение исполняемых файлов node и npm, используемых, запустив команду which следующим образом:

# which node
/root/.nvm/versions/node/v20.0.0/bin/node

# which npm
/root/.nvm/versions/node/v20.0.0/bin/npm

# node -v
v20.0.0

# npm -v
9.6.4

Список установленных версий Node.js

Можно проверить все установленные версии с помощью следующей команды:

# nvm ls
List Installed Node Versions in Linux
->      v19.0.0
        v20.0.0
         system
default -> node (-> v20.0.0)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v20.0.0) (default)
stable -> 20.0 (-> v20.0.0) (default)
lts/* -> lts/hydrogen (-> 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.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.0 (-> N/A)
lts/hydrogen -> v18.16.0 (-> N/A)

Выбор версии Node для проекта

Здесь становится интересным nvm. Теперь вы можете использовать nvm, чтобы выбирать версию node.js для каждого проекта, над которым вы работаете, в зависимости от требований. Давайте посмотрим, как это сделать, как объяснено ниже.

Откройте несколько терминалов и перейдите в каталоги проектов. В этом руководстве у нас два проекта в каталогах ~/projects/app-server и ~/projects/test-ui, которые требуют версии node 19.0.0 и 20.0.0 соответственно.

------------ Project 1 ------------ 
$ cd ~/projects/api-server
$ nvm use 19.0.0
$ node -v

------------ Project 2 ------------
$ cd ~/projects/test-ui
$ nvm use 20.0.0
$ node -v
Important: Note that when switching between different versions of Node.js, any global npm packages that you have installed will not work. This is because the multiple Node.js version installations are completely independent.

Например, если у вас установлен глобальный пакет при активной версии 19.0.0, при переключении на версию 20.0.0 вам нужно переустановить глобальный пакет для новой версии.

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

# nvm which 20.0.0
# nvm which 19.0.0
# nvm which system  #check system-installed version of a node using “system” alias

Установка версии Node.js по умолчанию в Linux

Кроме того, чтобы вручную установить версию узла по умолчанию для использования в любом новом оболочке, используйте псевдоним “по умолчанию”, как показано.

# nvm alias default 20.0.0
# nvm alias default system
# nvm alias default 19.0.0
Note: You can create a .nvmrc initialization file in your project root directory (or any parent directory) and add a node version number or any other flags or usage options that nvm understands, in it. Then use some of the commands we have just looked at above to operate with the specified version in the file.

Удаление версии Node.js в Linux

Чтобы удалить или удалить версию Node.js, выполните следующую команду (не забудьте заменить 19.0.0 на номер версии):

# nvm uninstall 19.0.0

Удаление NVM в Linux

Чтобы вручную удалить nvm из вашей системы, выполните следующие команды:

# rm -rf "$NVM_DIR"
OR
# rm -rf ~/.nvm

Затем отредактируйте ~/.bashrc (или соответствующий файл конфигурации профиля оболочки, как указано выше) и удалите следующие строки конфигурации:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion

Дополнительную информацию см. в nvm --help или перейдите на репозиторий Node Version Manager Github: https://github.com/nvm-sh/nvm.

Вот и все! Менеджер версий Node является простым сценарием bash для управления несколькими активными версиями node.js на вашей системе Linux. Используйте форму обратной связи ниже, чтобы задавать вопросы или делиться своими комментариями с нами.

Source:
https://www.tecmint.com/nvm-install-multiple-nodejs-versions-in-linux/