Среда выполнения Node.js позволяет запускать код на удаленном сервере вместо традиционного исполнения в браузере. И разработчики на JavaScript часто пользуются этим преимуществом, особенно при работе с серверными приложениями.
Для обеспечения надежности и эффективности проектов, а также для упрощения их отладки и проверки кода, важно поддерживать актуальную версию Node.js и NPM. Эту задачу можно выполнить с помощью Node Version Manager (NVM), который позволяет легко переключаться между разными версиями этих инструментов. В данной статье мы рассмотрим, как использовать NVM для управления и оптимизации процесса разработки.
Актуальные версии Node.js и NPM
С каждым выпуском Node.js добавляются новые функции и улучшения. Самой актуальной версией является 20.6.0, которая была опубликована 6 сентября 2023 года. Обновленная версия NPM 10.1.0, появилась 11 сентября. Она также включает ряд полезных функций, которые максимально раскрываются при интеграции с Node.js.
NVM в числе прочего позволяет устанавливать обновленные версии обоих продуктов.
Как установить Node Version Manager
Конечно, для того чтобы использовать NVM, сначала его нужно установить. Это делается индивидуально на стороне пользователя, он может адаптировать менеджер под свои конкретные задачи. К тому же, NVM при каждом запуске вызывается заново и может быть настроен под любую программную оболочку. Этот менеджер совместим с различными операционными системами, включая Unix, Windows, macOS и прочие.
Для установки NVM рекомендуется использовать стандартные команды curl или wget:
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash $ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
Функция install.sh загружает NVM напрямую из репозитория на сайте в файл ~/.nvm.
Также для каждой программной оболочки создается отдельный файл профиля:
~/.bash_profile ~/.zshrc ~/.profile ~/.bashrc
Разработчик может выбрать конкретный файл профиля под свои потребности в зависимости от текущей задачи.
Далее в выбранные файлы профиля необходимо добавить указанные строки кода с помощью процедуры export:
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
В этом фрагменте кода после задания процедуры export осуществляется вставка специфических участков кода из {Home}/.nvm в файлы, расположенные в директории NVM_DIR.
Для проверки корректности можно осмотреть добавленные строки в 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 теперь установлен в вашем проекте и его можно использовать для эффективного управления различными версиями Node.js.
Как пользоваться Node Version Manager
После интеграции NVM в наш проект можно начать применять его возможности на практике. Давайте попробуем установить последнюю версию Node.js с помощью менеджера.
Для этого используем следующую команду:
$ nvm install node Downloading and installing node v20.6.0... Downloading https://nodejs.org/dist/v20.6.0/node-v20.6.0-darwin-x64.tar.xz... ######################################################################## 100.0% Computing checksum with shasum -a 256 Checksums matched! Now using node v20.6.0 (npm v10.1.0)
В данном примере NVM не только загружает последние версии пакета Node с официального сайта (третья строка), но и отображает текущую используемую версию (в конце).
Также можно проверить совместимость версий Node.js и NPM на вашем компьютере:
$ node -v v20.6.0 $ npm -v 10.1.0
Вышеуказанные команды возвращают последнюю установленную версию. То есть в нашем примере это будут актуальные на данный момент Node.js 20.6.0 и NPM 10.1.0.
При необходимость можно таким же образом установить любую доступную версию:
$ 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)
Ее правильное название соответствует стандартной таблице SemVer. А если попытаться загрузить версию, которая уже установлена, NVM уведомит об этом и прекратит операцию:
$ nvm install 10.14.0 v10.14.0 is already installed. Now using node v10.14.0 (npm v6.4.1)
Можно также проверить все версии node.js, имеющиеся в проекте:
$ nvm ls -> v10.14.0 v10.15.0 v10.16.0 v12.16.0 v13.9.0 v15.4.0 v20.6.0 system default -> 12.16.0 (-> v12.16.0) node -> stable (-> v20.6.0) (default) stable -> 15.4 (-> v20.6.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 для каждого параметра. Это облегчает управление при наличии множества установленных версий.
С помощью функции nvm use можно быстро переключаться между версиями Node:
$ 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 v20.6.0 (npm v10.1.0) $ nvm use stable Now using node v20.6.0 (npm v10.1.0)
Здесь в скобках отображается соответствующая версия NPM. Иногда бывает так, что для некоторых более ранних версий Node.js используется более новая NPM.
В примере выше это:
- версия node 10.16.0 использует npm 6.14.5;
- а версия node 13.9.0 использует 6.13.7.
Чтобы синхронизировать версии, можно использовать следующие команды:
$ nvm use 10.16.0 $ npm install -g npm@6.14.5
Также можно просто обновить NPM до последней версии для текущей версии Node.js. Для этого нужно использовать такую команду:
$ nvm install-latest-npm
Это достаточно удобно и эффективно. Перечисленные команды NVM обеспечивают гибкость в управлении версиями Node. Их можно использовать для настройки новых проектов и для оптимизации существующих.
Важно учитывать, что это применимо только к определенной оболочке. При переходе на новую модификации Node отменяются.
Чтобы этого избежать, можно задать версию Node.js по умолчанию (default):
$ nvm alias default 20.6.0
Указанная версия будет единой для всех оболочек.
Рекомендуется сохранять версии в соответствии с SemVer в файле .nvmrc. В итоге команды NVM (install, use, exec, run, which и прочие) автоматически будут использовать версию из этого файла:
$ cat .nvmrc 20.6.0 $ nvm use Found '/Users/fuje/.nvmrc' with version <20.6.0> Now using node v20.6.0 (npm v10.1.0)
Для проверки активной версии можно использовать следующую команду:
$ nvm current v20.6.0
Чтобы увидеть полный список доступных версий Node, используйте команду:
$ nvm ls-remote
В результате отобразится полный список выпущенных версий Node – он будет достаточно длинным, так как существующие обновления сохраняются в исходном виде, а к ним постоянно продолжают добавляться все новые и новые версии.
Однако, если указать базовый номер версии, то отобразится список только с ее подверсиями. И он будет содержать значительно меньше позиций:
$ 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
С помощью команды which можно отобразить путь к скачанным версиям и самому NVM:
$ 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 на вашем компьютере.
Также можно запустить приложение с нужной версией Node:
$ nvm run 10.15.0 app.js
Мы рассмотрели лишь базовые возможности NVM. Вы можете отобразить для просмотра дополнительные функции с помощью команды help:
$ nvm --help
Обновление Node Version Manager
Помимо установки новых версий Node.js и NPM время от времени требуется обновлять и сам NVM. Более новые версии могут обладать улучшенным интерфейсом или иметь дополнительные функции.
Для примера давайте рассмотрим обновление NVM до самой актуальной версии 0.39.5 с помощью команды curl:
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/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, необходимо перезапустить консоль кода, как указано в инструкциях по установке.
После перезапуска можно проверить результат:
$ nvm --version 0.39.5
Одним из самых значимых обновлений NVM является добавленная возможность настройки цветов команд. Это способствует более яркому и понятному отображению информации на экране, улучшая тем самым удобство работы в Node.js.
nvm set-colors [<color codes>] Set five text colors using format “yMcBg”. Available when supported. Initial colors are: g b y r e Color codes: r/R = red / bold red g/G = green / bold green b/B = blue / bold blue c/C = cyan / bold cyan m/M = magenta / bold magenta y/Y = yellow / bold yellow / = / e/W = light grey / white
Управлять цветами можно с помощью функции set-colors:
$ nvm set-colors cgYmW
Чтобы показать стандартные цвета, нужно применить команду nvm ls:
[$ nvm 1s v10.14.0 v12.15.0 -> v12.16.0 v13.16.0 v15.9.0 V20.4.0 system default -> 12.16.0 (-> v12.16.0) iojs -> N/A (default) unstable -> N/A (default) node -> stable (-> v15.4.0) (default) stable -> 15.4 (-> v15.4.0) (default) lts/* -> 1ts/fermium (-> N/A) lts/argon -> v5.9.1 (-> N/A) lts/boron -> v7.17.1 (-> N/A) lts/carbon -> v9.17.0 (-> N/A) lts/dubnium -> v11.23.0 (-> N/A) lts/erbium -> v14.20.0 (-> N/A) lts/fermium —> v15.15.1 (-> N/A)
Пользователь может по собственному желанию изменить цвета. Например, вот так:
[$ nvm 1s v10.14.0 v12.15.0 -> v12.16.0 v13.16.0 v15.9.0 V20.4.0 system default -> 12.16.0 (-> v12.16.0) iojs -> N/A (default) unstable -> N/A (default) node -> stable (-> v15.4.0) (default) stable -> 15.4 (-> v15.4.0) (default) lts/* -> 1ts/fermium (-> N/A) lts/argon -> v5.9.1 (-> N/A) lts/boron -> v7.17.1 (-> N/A) lts/carbon -> v9.17.0 (-> N/A) lts/dubnium -> v11.23.0 (-> N/A) lts/erbium -> v14.20.0 (-> N/A) lts/fermium —> v15.15.1 (-> N/A)
Цветной ввод и отображение кода – это полезная функция для профессиональных разработчиков, которая улучшает качество и удобство разработки. Актуальная версия NVM упрощает этот процесс и позволяет создать персонализированный стиль.
Заключение
Все больше опытных разработчиков JavaScript переходят на платформу Node и используют NVM для управления ее обновлениями. Потому что менеджер NVM – это простой инструмент для установки актуальных версий Node.js и NPM. Он позволяет оптимизировать работу в программной среде Node и расширить ее возможности. Кроме того, NVM помогает развивать навыки работы с различными программными оболочками на разных платформах, обеспечивая их совместимость.
Стандартные версии Node.js, которые классифицированы по SemVer, регулярно обновляются и всегда доступны на официальном сайте NVM.
Комментарии