Наш прошлый перевод про новые функции 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. Надеюсь, статья была
полезной. Другие публикации автора можно найти
здесь.