Поиск по сайту:

Как управлять версиями Nodejs с помощью n в Linux

В этом руководстве представлено краткое введение в "n", неофициальный инструмент управления версиями узлов, а затем объясняется, как легко управлять версиями nodejs с помощью n в операционных системах Linux.

Что такое, менеджер версий узла?

NodeJS не требует представления. Nodejs — это среда выполнения JavaScript, построенная на базе движка Google V8. Nodejs поставляется со встроенным менеджером пакетов под названием npm для установки и управления версиями узлов, а также существует множество сторонних инструментов для управления версиями узлов. n — это один из сторонних инструментов управления версиями узлов. Да, это всего лишь одна буква - н.

n — это интерактивный менеджер версий узлов, позволяющий легко управлять одной или несколькими версиями NodeJS! Никаких подоболочек, никаких настроек профиля, никаких запутанных API, никаких затрат на обучение — это просто простой инструмент. Это всего лишь сценарий оболочки, и его код находится в свободном доступе на GitHub.

1. Установите в Linux

Самый простой способ установить n — через npm. Как уже говорилось, Npm — это встроенный менеджер пакетов для Nodejs, который предустановлен вместе с Nodejs.

Я предполагаю, что на вашем компьютере с Linux уже установлена последняя версия Nodejs. Если вы еще не установили NodeJS, обратитесь к следующему руководству:

  • Как установить NodeJS в Linux

Затем выполните следующую команду для установки n в Linux:

npm install -g n

Если npm недоступен или вы не хотите устанавливать n с помощью npm, вы можете напрямую получить скрипт n с GitHub и установить его, как показано ниже:

curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n
bash n lts

При этом будут установлены как версия node lts, так и npm.

1.2. Создайте домашний каталог для установки узла.

По умолчанию n устанавливает node в подкаталог n/versions каталога /usr/local/, который определен в N_PREFIX переменная среды. Как вы уже знаете, нам требуется разрешение sudo для установки узла в каталоге /usr/local/n/versions/node/. Чтобы избежать использования sudo, вы можете создать специальный каталог для установки узлов в $HOME и добавить их в свой PATH.

Чтобы создать домашний каталог для установки узла, отредактируйте файл профиля пользователя, например ~/.bashrc:

vi ~/.bashrc

Добавьте следующие строки:

export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH

Нажмите клавишу ESC и введите :wq, чтобы сохранить файл и выйти.

1.3. Установите n с помощью сценария n-install.

Другой способ установить n – использовать сценарий n-install, который устанавливает n непосредственно с GitHub.

curl -L https://git.io/n-install | bash

Эта команда выполнит следующий набор задач:

  • Во-первых, он устанавливает для PREFIX и N_PREFIX значение $HOME/n;
  • И устанавливает n в $HOME/n/bin;
  • Затем изменяет файлы инициализации поддерживаемых оболочек для экспорта N_PREFIX;
  • Затем добавляет $HOME/n/bin к PATH;
  • Наконец, устанавливается последняя версия LTS Node.js.

2. Управление версиями nodejs с помощью n в Linux

Устанавливать версии nodejs и управлять ими с помощью n довольно просто! Давайте посмотрим несколько примеров.

2.1. Получать помощь

Если вы новичок в n, вероятно, будет хорошей идеей открыть раздел справки и научиться использовать n.

Чтобы просмотреть раздел справки n, просто запустите:

n --help

Просмотрите справочное руководство, чтобы получить представление об использовании каждой команды.

 Usage: n [options] [COMMAND] [args]
 Commands:
 n                              Display downloaded Node.js versions and install selection
   n latest                       Install the latest Node.js release (downloading if necessary)
   n lts                          Install the latest LTS Node.js release (downloading if necessary)
   n                     Install Node.js  (downloading if necessary)
   n install             Install Node.js  (downloading if necessary)
   n run  [args …]     Execute downloaded Node.js  with [args …]
   n run  [args …]     Execute downloaded node  with [args …]
   n which               Output path for downloaded node 
   n exec   [args…]  Execute command with modified PATH, so downloaded node  and npm first
   n rm              Remove the given downloaded version(s)
   n prune                        Remove all downloaded versions except the installed version
   n --latest                     Output the latest Node.js version available
   n --lts                        Output the latest LTS Node.js version available
   n ls                           Output downloaded versions
   n ls-remote [version]          Output matching versions available for download
   n uninstall                    Remove the installed Node.js
 Options:
 -V, --version         Output version of n
   -h, --help            Display help information
   -p, --preserve        Preserve npm and npx during install of Node.js
   -q, --quiet           Disable curl output (if available)
   -d, --download        Download only
   -a, --arch            Override system architecture
   --all                 ls-remote displays all matches instead of last 20
   --insecure            Turn off certificate checking for https requests (may be needed from behind a proxy server)
   --use-xz/--no-use-xz  Override automatic detection of xz support and enable/disable use of xz compressed node downloads.
 Aliases:
 install: i
   latest: current
   ls: list
   lsr: ls-remote
   lts: stable
   rm: -
   run: use, as
   which: bin
 Versions:
 Numeric version numbers can be complete or incomplete, with an optional leading 'v'.
   Versions can also be specified by label, or codename,
   and other downloadable releases by /
 4.9.1, 8, v6.1    Numeric versions lts               Newest Long Term Support official release latest, current   Newest official release auto              Read version from file: .n-node-version, .node-version, .nvmrc, or package.json engine            Read version from package.json boron, carbon     Codenames for release streams lts_latest        Node.js support aliases and nightly, rc/10 et al

2.2. Установите версии Nodejs, используя n

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

n latest

Пример вывода:

 installing : node-v16.2.0
        mkdir : /home/ostechnix/.n/n/versions/node/16.2.0
        fetch : https://nodejs.org/dist/v16.2.0/node-v16.2.0-linux-x64.tar.xz
    installed : v16.2.0 (with npm 7.13.0)
 Note: the node command changed location and the old location may be remembered in your current shell.
          old : /home/ostechnix/.nvm/versions/node/v16.1.0/bin/node
          new : /home/ostechnix/.n/bin/node
 To reset the command location hash either start a new shell, or execute PATH="$PATH"

Установите версию nodejs с n в Linux

Старая версия узла будет перемещена в новое место, т.е. в моем случае /home/ostechnix/.n/bin/node. Откройте новый сеанс оболочки или перезапустите сеанс терминала, чтобы использовать версию узла из нового местоположения.

Проверьте установленную версию узла:

node --version
v16.2.0

Проверьте версию npm:

npm -v
7.13.0

Аналогичным образом вы можете установить версию узла LTS, используя n, как показано ниже:

n lts

Пример вывода:

    installing : node-v14.17.0
        mkdir : /home/ostechnix/.n/n/versions/node/14.17.0
        fetch : https://nodejs.org/dist/v14.17.0/node-v14.17.0-linux-x64.tar.xz
    installed : v14.17.0 (with npm 6.14.13)

Вы также можете установить определенную версию Nodejs, например 16.0.0, используя команду:

n 16.0.0

Как вы могли заметить, n создает отдельные каталоги для каждой версии узла. Например, он создает каталог /home/ostechnix/.n/n/versions/node/16.2.0 для последней версии узла, n/versions/node/14.17.0 для версии узла LTS и n/versions/node/16.0.0 для узла версии 16.0.0. Таким образом, каждая версия не смешивается друг с другом, и мы можем переключиться на любую версию в любое время.

2.3. Загрузите версии Nodejs, но не устанавливайте

Если вы не хотите устанавливать версию Nodejs, а хотите только загрузить ее, используйте опцию -d, --download:

n -d 15.8.0

Эта команда загрузит только версию узла 15.8.0, но не установит ее.

Пример вывода:

 installing : node-v15.8.0
        mkdir : /home/ostechnix/.n/n/versions/node/15.8.0
        fetch : https://nodejs.org/dist/v15.8.0/node-v15.8.0-linux-x64.tar.xz

2.4. Список локально загруженных версий Nodejs

Чтобы просмотреть все загруженные версии Nodejs в локальном кеше, просто запустите:

n ls

Или,

n list

Пример вывода:

 node/14.17.0
 node/15.8.0
 node/16.0.0
 node/16.2.0

2.5. Список доступных версий Nodejs из удаленного репозитория

Мы можем использовать опцию ls-remote для просмотра последних 20 версий Nodejs из реестра npm.

n ls-remote

Или,

n lsr

Пример вывода:

 Listing remote… Displaying 20 matches (use --all to see all).
 16.2.0
 16.1.0
 16.0.0
 15.14.0
 15.13.0
 15.12.0
 15.11.0
 15.10.0
 15.9.0
 15.8.0
 15.7.0
 15.6.0
 15.5.1
 15.5.0
 15.4.0
 15.3.0
 15.2.1
 15.2.0
 15.1.0
 15.0.1

Самая последняя версия будет показана вверху.

По умолчанию в нем перечислено 20 версий. Вы также можете отобразить определенное количество версий узла.

n lsr 10

Чтобы вывести список всех доступных версий nodejs, используйте опцию --all.

n ls-remote --all

2.6. Отобразить путь к загруженной версии Nodejs.

Чтобы распечатать полный путь к конкретной загруженной версии узла, запустите:

n which node/16.2.0

Пример вывода:

/home/ostechnix/.n/n/versions/node/16.2.0/bin/node

2.7. Переключение версий Nodejs

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

n

Эта команда отобразит все загруженные версии nodejs. Вы можете выбрать нужную версию, используя стрелки вверх/вниз, и нажать клавишу ENTER, чтобы установить ее.

    node/14.17.0
    node/15.8.0
  ο node/16.0.0
    node/16.2.0

 Use up/down arrow keys to select a version, return key to install, d to delete, q to quit

Версия по умолчанию обозначается маленьким кружком перед ней.

Если вам не нужна конкретная загруженная версия nodejs, просто выберите ее и нажмите d, чтобы удалить ее. Для выхода нажмите q.

2.8. Запустить загруженную версию Nodejs

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

n run 15.8.0

Пример вывода:

Welcome to Node.js v15.8.0.
 Type ".help" for more information.
  >  

Нажмите Ctrl+D или введите .exit, чтобы выйти из приглашения узла.

2.9. Удалить загруженные версии Nodejs

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

n ls

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

n rm node/16.0.0

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

n

С помощью стрелок вверх/вниз выберите версию, которую хотите удалить, и нажмите d, чтобы удалить ее. Вы должны быть осторожны при удалении версии узла. Потому что вам не будет предложено подтвердить удаление. Как только вы нажмете клавишу d, выбранная версия исчезнет.

Чтобы удалить все загруженные версии, кроме установленной, запустите:

n prune

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

n uninstall

Вас спросят, хотите ли вы удалить Node и Npm из вашей системы. Введите y и нажмите клавишу ENTER, чтобы полностью удалить node и npm, установленные n из вашей системы.

 Do you wish to delete node and npm from /home/ostechnix/.n? y
 Uninstalling node and npm
 /home/ostechnix/.n/bin/node
 /home/ostechnix/.n/bin/npm
 /home/ostechnix/.n/bin/npx
 /home/ostechnix/.n/include/node
 /home/ostechnix/.n/lib/node_modules/npm
 /home/ostechnix/.n/share/doc/node
 /home/ostechnix/.n/share/man/man1/node.1
 /home/ostechnix/.n/share/systemtap/tapset/node.stp

Однако это не приведет к удалению версии узла, установленной с помощью NVM или менеджера пакетов вашего дистрибутива. Будут удалены только те версии узлов, которые установлены с помощью n.

Заключение

Сценарий n будет полезен, если вы захотите использовать другую версию Nodejs для разных проектов. Вам не нужно удалять одну версию Nodejs и устанавливать другую для каждого проекта. Вы можете установить несколько версий Nodejs и мгновенно переключаться с одной версии Nodejs на другую.

Ресурсы:

  • Репозиторий GitHub
  • Репозиторий сценариев GitHub без установки

Статьи по данной тематике