https://habr.com/ru/company/timeweb/blog/541452/- Блог компании Timeweb
- JavaScript
- Node.JS
Наш прошлый перевод про новые функции 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 node
Downloading 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 256
Checksums matched!
Now using node v15.4.0 (npm v7.0.15)
В выходных данных из примера выше указано, что npm
7.0.15 используется вместе с node.js
15.4.0. Проверим:
$ node -v
v15.4.0
$ npm -v
7.0.15
Также мы можем указать нужную версию для установки. Семантический формат версии определяется
SemVer:
$ nvm install 10.14.0
Downloading 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 256
Checksums matched!
Now using node v10.14.0 (npm v6.4.1)
Если указанная версия уже была установлена, она не переустанавливается:
$ nvm install 10.14.0
v10.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
system
default -> 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.0
Now using node v12.16.0 (npm v6.14.8)
$ nvm use 10.16.0
Now using node v10.16.0 (npm v6.14.5)
$ nvm use 13.9.0
Now using node v13.9.0 (npm v6.13.7)
$ nvm use default
Now using node v12.16.0 (npm v6.14.8)
$ nvm use node
Now using node v15.4.0 (npm v7.0.15)
$ nvm use stable
Now 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 .nvmrc
15.4.0
$ nvm use
Found '/Users/fuje/.nvmrc' with version <15.4.0>
Now using node v15.4.0 (npm v7.0.15)
Мы можем проверить текущую версию с помощью следующей команды:
$ nvm current
v15.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.12
N/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 Speed
100 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 --version
0.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. Надеюсь, статья была полезной. Другие публикации автора можно найти
здесь.