Управление версиями Node.js с помощью nvm в Windows
Вопрос экономии времени и удобства окружения разработчика — штука сложная. Работая с Node.js, иногда приходится тестировать своё приложение не только в той версии, которую используете вы, но и в тех, что были выпущены до неё или даже после. В большинстве своём, это касается пакетов (библиотек), которые распространяются через npm. Разумеется, вы можете использовать для этих целей Travis CI, но этот инструмент создан не для этого.
Наиболее простым способом устанавливать и переключать версии Node.js на Linux является использование утилиты nvm. Для разработчиков, которые «сидят» на Windows, существует порт этой утилиты, хотя и менее продвинутый. Разбираемся в управлении версиями Node.js через консоль в Windows.
Что такое nvm?
nvm (Node Version Manager) — это довольно простой скрипт, который позволяет устанавливать, переключать и удалять версии Node.js на лету. Проще говоря, nvm даёт вам возможность держать на одной машине любое количество версий Node.js. При установке новой версии для неё создаётся отдельная директория, например, 5.0.0 или 4.2.2. При переключении версий скрипт подменяет путь до Node.js в PATH.
При этом нужно помнить, что глобальные пакеты для каждой версии свои и никак не пересекаются. Это значит, что если вы глобально установили пакет, используя Node.js версии 4.2.2 и переключились на версию 5.1.0, то этот же пакет вам придётся устанавливать повторно уже для этой версии.
Установка nvm
Напомню, что речь сейчас идёт про Windows, и установить nvm здесь так же «сложно», как и любую другую программу или игру. Для этого вам придётся перейти в репозиторий nvm-windows и загрузить установочный пакет. Далее процедура полностью стандартна, как и для любого другого установочного файла в Windows: выбираете директорию установки и несколько раз кликаете на «Далее».
Установка Node.js
Теперь, когда у вас установлен nvm, пришло время добавить новую версию Node.js. Для этого потребуется прочитать справку, которую можно вызвать, используя команду nvm .
Сначала посмотрим на список доступных для установки версий Node.js, который можно открыть командой $ nvm list available . В этом списке доступны как стабильные, так и нестабильные релизы.

Обратите внимание, что здесь не хватает 5-ой версии Node.js. Дело в том, что создатель nvm для Windows ещё не подготовил новый релиз, добавляющий 5-ую версию Node.js в этот список.
Итак, установим последнюю версию Node.js четвертой ветки. Для этого, к сожалению, потребуется полностью прописать версию Node.js, хотя в версии под Linux и OSX можно просто указывать мажорную цифру (4 или 5).
$ nvm install 4.2.2
Тоже самое можно проделать с пятой веткой:
$ nvm install 5.1.0
Помимо версии, при установке есть возможность указать разрядность, например, для установки Node.js 5.1.0 32-битной разрядности следует выполнить
$ nvm install 5.1.0 32
Переключение версий
Посмотрим на список уже установленных версий Node.js на вашей машине, выполнив в консоли команду $ nvm list :

Для того, чтобы начать использовать Node.js версии 4.2.2, нужно прописать в консоли $ nvm use 4.2.2 . После этого из консоли станет доступна именно эта версия Node.js и поставляемая вместе с ней версия npm:

Соответственно, чтобы переключиться на Node.js версии 5.1.0, нужно выполнить команду:
$ nvm use 5.1.0
Теперь, когда вы выполняете команду $ nvm list , в выводе будет присутствовать указатель текущей версии:

Создание синонимов
Я вынужден был создать этот заголовок в виду того, что «настоящий» nvm позволяет назначать установленным версиям Node.js синонимы. К сожалению, пока что nvm для Windows не умеет этого.
Немного про глобальные пакеты
Как я уже говорил в начале, nvm разделяет версии Node.js по директориям, и, из-за этого, устанавливаемые глобально пакеты доступны лишь в той версии, в которой они были установлены.
Для примера я установлю свой же пакет windows-ls в версии 4.2.2 и попытаюсь использовать его в версии 5.1.0. В итоге я получаю ошибку, говорящую о том, что такого пакета нет.

Итоги
Все мы знаем, что Windows — это не та платформа, на которую ориентированы разработчики инструментов, которые нужны веб-разработчикам. Примеров, отображающих эту ситуацию довольно много и для каждого они свои, поэтому приводить я их здесь не буду. Рассмотренная в этой статье утилита делает жизнь разработчикам на Windows чуточку лучше, позволяя сконцентрироваться на работе, а не загрузке, установке и удалении различных версий Node.js.
Делимся на оплату хостинга или кофе.
Чем чаще пью кофе, тем чаще пишу статьи.
Update Node.js on Linux, macOS, and Windows
Estamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
Create a Linode account to try this guide with a $ credit .
This credit will be applied to any valid services used during your first days.
Node.js is a cross-platform runtime environment for server-side JavaScript applications. Node.js uses the V8 JavaScript engine and is very popular. It is regularly updated for security and improvements, and should be kept updated on your systems.
Before You Begin
- This guide assumes you are already running Node.js on your Linode or local workstation and are updating the version. If you don’t have it installed, see the How to Install Node.js guide.
- Install NPM, which installs by default with Node.js.
- This guide assumes you are only updating your version of Node.js and aren’t looking to run multiple versions. If you do, see the guide How to Install and Use the Node Version Manager.
- Update your Linode’s system: sudo apt-get update && sudo apt-get upgrade
- Update your local workstation’s system using the tools and package managers for the operating system.
- If you’re using the installer to update, go to the Node.js downloads page to get the appropriate version. The most recent version of long-term support (LTS) is listed and you also have the option to choose a version in the Current section.
Current is for developers and development or testing environments that don’t require the systems to be as stable or up and accessible. LTS is aimed at production environments that require stability and continued uptime. If you are unsure which you need, choose LTS.
Updating the Node.js version using NPM
NPM is installed by default with Node.js and is the easiest way to update to any new version on Linux, macOS, or Windows when you do not need to use multiple versions.
- Open the Terminal on Linux or macOS. On Windows, launch the Windows PowerShell as an administrator. Search for it in the search bar and then either right-click or click on the arrow to the right and choose Run as Administrator.
- Enter the command npm install -g n to install the n module, a Node.js version manager.
- Now that n is installed, enter n stable in the Terminal or PowerShell to install the stable version of Node.js
- You can also use n latest for the most recent version, or n [version number] if you have a specific version you need to install.
- Agree to any prompts that appears.
- When the installation is complete, check the version installed with node -v .
- Close the Terminal or PowerShell when finished.
Updating the Node.js version using NVM
If you need to install NVM, see our guide How to Install and Use the Node Version Manager. It’s a useful tool to have, especially in a development environment or if you have to use multiple versions of Node.js.
- Open the Terminal on Linux or macOS. On Windows, launch the Windows PowerShell as an administrator. Search for it in the search bar and then either right-click or click on the arrow to the right and choose Run as Administrator.
- If you only need the most recent stable version, enter the command nvm ls stable .
- If you need something other than the stable version: a. Enter the command nvm ls to check what version you have. d. Enter the command nvm ls -remote to see what versions are available. Note the one you need. c. Enter the command nvm install [version number]
- Agree to any prompts that appears.
- When the installation is complete, check the version installed with nvm ls .
- Close the Terminal or PowerShell when finished.
Updating the Node.js version on macOS
Using Homebrew
If you installed Node.js using Homebrew, then updating is easy.
- Open the Terminal.
- Enter the command brew update and agree to any prompts.
- Enter the command brew upgrade node and agree to any prompts.
- Quit the Terminal when finished.
Using the Node.js Installer
- Open the installer from your Downloads folder and click Continue.
- If you agree with it, accept the license by clicking Continue and Agree.
- If you need to change the installation location, do so. Also, if you want to customize the installation, choose Customize. Linode recommends using the Standard Installation. Click Continue.
- The installation is finished. Click Close and macOS moves the installer to the Trash.
Updating the Node.js version on Windows
Using Chocolatey
Assuming you installed Chocolatey when originally installing Node.js, updating should move quickly. Otherwise, update using the following installer instructions.
- Launch the Windows PowerShell as an administrator. Search for it in the search bar and then either right-click or click on the arrow to the right and choose Run as Administrator.
- When the command prompt loads, enter the following command:
choco upgrade nodejs.install
Using the Node.js Installer
- Open the installer from your Downloads folder and click Next.
- If you agree with it, accept the license by checking the box next to I accept the terms in the License Agreement and click Next.
- If you need to change the installation location, do so now and click Next.
- Choose the packages to install Linode recommends all of them, which is the default. You are prompted to check a box to Automatically install the necessary tools. Do so and click Next.
- After installation is complete move the installer to the Recycle Bin.
More Information
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
This page was originally published on September 9, 2021.
Setting Your Node.js Version
By default, Render’s Node.js runtime uses version 14.17.0 .
Specify a different Node.js version in any of the following ways (in order of precedence):

-
Set the NODE_VERSION environment variable for your service in the Render Dashboard:
18.18.0
"engines": "node": ">=18.18.0 >
You can specify either a semantic version number (such as 18.18.0 ) or an alias (such as lts ).
Render uses the node-version-alias module to resolve version aliases and semver ranges.
Управление версиями 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 "$" ] && printf %s "$/.nvm" || printf %s "$/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 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. Надеюсь, статья была полезной. Другие публикации автора можно найти здесь.
- Блог компании Timeweb Cloud
- JavaScript
- Node.JS
