Русский
Русский
English
Статистика
Реклама

Перевод Управление версиями Node.js и NPM с помощью NVM

Наш прошлый перевод про новые функции 15-й версии Node.js был очень хорошо принят читателями Хабра, поэтому сегодня мы решили продолжить тему и рассказать, как настроить NVM с версией Node.js 15 и NPM 7.

Версия Node.js 15 была выпущена 20 октября 2020 года. Она поставляется с npm 7 и множеством новых функций. Вы уже успели опробовать новую версию?

Но подождите минутку! Node.js 15 и npm 7 содержат критические изменения. Не повредит ли тогда обновление существующим проектам?

Теоретически может повредить!



К счастью, у нас есть NVM (Node Version Manager), который избавит нас от этой опасности. Давайте детально рассмотрим данный инструмент, чтобы без проблем обновить версии node.js и npm.

Установка NVM


nvm управляет версиями node.js и npm. Он устанавливается для конкретного пользователя и может быть вызван отдельно для каждой оболочки. nvm работает с любой POSIX-совместимой оболочкой (sh, dash, ksh, zsh, bash), в том числе на платформах: unix, macOS и windows WSL.

nvm можно установить с помощью команд curl или wget:

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash


Скрипт install.sh клонирует репозиторий nvm в ~/.nvm и пытается добавить исходные строки из приведенного ниже фрагмента в нужный файл профиля (~/.bash_profile, ~/.zshrc, ~/.profile или ~/.bashrc).

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

В ~/.bash_profile мы видим, что строки добавлены:

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

Использование NVM


Итак, мы установили nvm. Теперь используем данную команду для установки последней версии node.js:

$ nvm install nodeDownloading and installing node v15.4.0...Downloading https://nodejs.org/dist/v15.4.0/node-v15.4.0-darwin-x64.tar.xz...######################################################################## 100.0%Computing checksum with shasum -a 256Checksums matched!Now using node v15.4.0 (npm v7.0.15)

В выходных данных из примера выше указано, что npm 7.0.15 используется вместе с node.js 15.4.0. Проверим:

$ node -vv15.4.0$ npm -v7.0.15

Также мы можем указать нужную версию для установки. Семантический формат версии определяется SemVer:

$ nvm install 10.14.0Downloading and installing node v10.14.0...Downloading https://nodejs.org/dist/v10.14.0/node-v10.14.0-darwin-x64.tar.xz...######################################################################## 100.0%Computing checksum with shasum -a 256Checksums matched!Now using node v10.14.0 (npm v6.4.1)

Если указанная версия уже была установлена, она не переустанавливается:

$ nvm install 10.14.0v10.14.0 is already installed.Now using node v10.14.0 (npm v6.4.1)

Мы можем вывести на экран все установленные версии:

$ nvm ls->     v10.14.0       v10.15.0       v10.16.0       v12.16.0        v13.9.0        v15.4.0         systemdefault -> 12.16.0 (-> v12.16.0)node -> stable (-> v15.4.0) (default)stable -> 15.4 (-> v15.4.0) (default)iojs -> N/A (default)unstable -> N/A (default)lts/* -> lts/fermium (-> 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.23.0 (-> N/A)lts/erbium -> v12.20.0 (-> N/A)lts/fermium -> v14.15.1 (-> N/A)

В приведенных выше примерах вывода символ -> указывает, что текущая версия node.js 10.14.0. Стрелка также представляет значения для default (12.16.0), node (15.4.0) и stable (15.4.0).

nvm use заменяет текущую версию:

$ nvm use 12.16.0Now using node v12.16.0 (npm v6.14.8)$ nvm use 10.16.0Now using node v10.16.0 (npm v6.14.5)$ nvm use 13.9.0Now using node v13.9.0 (npm v6.13.7)$ nvm use defaultNow using node v12.16.0 (npm v6.14.8)$ nvm use nodeNow using node v15.4.0 (npm v7.0.15)$ nvm use stableNow using node v15.4.0 (npm v7.0.15)

Возможно, вы спросите, как так получилось, что v10.16.0 использует более позднюю версию npm, чем v13.9.0. Эту задачу можно решить с помощью следующих команд:

$ nvm use 10.16.0$ npm install -g npm@6.14.5

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

$ nvm install-latest-npm

nvm use устанавливает нужную версию только для текущей оболочки. Если вы измените оболочку, только что обновленная версия node.js будет потеряна.

Как сделать определенную версию Node.js постоянной?

Версия по умолчанию такая версия, которая распространяется на все оболочки.

Команда nvm alias позволяет установить версию по умолчанию.

$ nvm alias default 10.16.0


Для удобства можно создать файл .nvmrc, который принимает формат SemVer, node или default. После этого nvm use, nvm install, nvm exec, nvm run и nvm which будут использовать версию, указанную в файле .nvmrc, если в командной строке не указана другая.

$ cat .nvmrc15.4.0$ nvm useFound '/Users/fuje/.nvmrc' with version <15.4.0>Now using node v15.4.0 (npm v7.0.15)

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

$ nvm currentv15.4.0

ls-remote выводит на экран все доступные версии, но будьте готовы к очень длинному списку.

$ nvm ls-remote

Обратим внимание, что название версии в сокращенной форме значительно сокращает весь список.

$ nvm ls-remote 15        v15.0.0        v15.0.1        v15.1.0        v15.2.0        v15.2.1        v15.3.0->      v15.4.0

nvm which указывает путь к исполняемому файлу, где nvm был установлен. Мы установили такие версии node.js, как 10.14.0, 10.15.0 и 10.16.0. Вот результаты nvm which:

$ nvm which 10.14.0/Users/fuje/.nvm/versions/node/v10.14.0/bin/node$ nvm which 10.15.0/Users/fuje/.nvm/versions/node/v10.15.0/bin/node$ nvm which 10.16.0/Users/fuje/.nvm/versions/node/v10.16.0/bin/node$ nvm which 10.15/Users/fuje/.nvm/versions/node/v10.15.0/bin/node$ nvm which 10.12N/A: version "v10.12" is not yet installed.You need to run "nvm install 10.12" to install it before using it.$ nvm which 10/Users/fuje/.nvm/versions/node/v10.16.0/bin/node

Указанную версию Node.js можно использовать непосредственно для запуска приложений:

$ nvm run 10.15.0 app.js

Как вариант, данная команда запускает node app.js с переменной PATH, указывающей на версию 10.15.0.

$ nvm exec 10.15.0 node app.js

Если вам нужно больше nvm-команд, запустите команду help:

$ nvm --help


Обновление NVM


Мы можем использовать nvm для обновления node.js и npm. Но как обновить сам nvm?

Давайте попробуем!

Перед обновлением у нас установлен nvm 0.34.0.

Обновляем до версии 0.37.2.

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100 13527  100 13527    0     0  23046      0 --:--:-- --:--:-- --:--:-- 23083=> nvm is already installed in /Users/fuje/.nvm, trying to update using git=> => Compressing and cleaning up git repository=> nvm source string already in /Users/fuje/.bash_profile=> bash_completion source string already in /Users/fuje/.bash_profile=> Close and reopen your terminal to start using nvm or run the following to use it now:export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

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

$ nvm --version0.37.2

По сравнению с версией 0.34.0, в версии 0.37.2 добавлена функция nvm set-colors для вывода на консоль.



По умолчанию nvm ls показывает следующие цвета:



Установим новые цвета:

$ nvm set-colors cgYmW

nvm ls отображает вывод с новыми цветами:



Заключение


nvm упрощает управление версиями node.js и npm. Теперь мы точно готовы перейти на node.js 15 и npm 7. Надеюсь, статья была полезной. Другие публикации автора можно найти здесь.
Источник: habr.com
К списку статей
Опубликовано: 08.02.2021 20:16:10
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании timeweb

Javascript

Node.js

Timeweb

Nvm

Npm

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru