Перейти к основному содержимому

Разрешение версий

NVM for Windows принимает несколько способов указать версию Node.js. В зависимости от контекста ввод может называть один релиз, обозначать линейку релизов или описывать допустимый диапазон. NVM for Windows разрешает этот ввод в конкретную версию Node.js перед выполнением операции.

Есть два вида ввода версии:

  • Спецификатор версии — аргумент командной строки для операций.
  • Ограничение версии — описание допустимых версий в файле проекта.

Спецификаторы версий​

Спецификаторы версий — токены, передаваемые командам вроде install, use и uninstall.

ФормаПримерРазрешение
Последний релизlatestНовейший доступный релиз из индекса зеркала.
Последний LTSltsНовейший доступный LTS-релиз.
Именованная LTS-линейкаlts/ironНовейший релиз из указанной LTS-линейки.
Пользовательский aliaslegacyВерсия, назначенная через nvm alias add.
Только major24Новейший релиз вида 24.x.x.
Major.minor24.1Новейший релиз вида 24.1.x.
Точная версия24.1.0, v24.1.0Указанный релиз. Префикс v необязателен.

Команды, принимающие спецификаторы версий:

Примеры​

# зарезервированные alias
nvm install lts
nvm use latest

# именованная LTS-линейка
nvm install lts/iron

# частичные и точные версии
nvm use 24.1
nvm cache add 22.14.0

# пользовательский alias
nvm alias add stable 24.1.0
nvm use stable

Ограничения версий​

Ограничения версий описывают допустимые релизы в файлах закрепления и auto-detect. В отличие от спецификатора в командной строке, ограничение может соответствовать диапазону релизов.

ОграничениеПримерЗначение
Caret^18Совместимо с major 18.
Tilde~20.1Совместимо с minor 20.1.
Minimum>=16Версия 16 или новее.
Range>=18 <21Версия 18 или новее, но младше 21.
Wildcard18.xЛюбой релиз в линейке 18.x.
Any*Любая версия.
Exact24.1.0Только указанный релиз.

Ограничения могут встречаться в следующих файлах проекта:

ИсточникТипичное содержимоеПоведение
.nvmrcТочная версия или ограничениеAuto-detect разрешает подходящую версию.
.node-versionТочная версия или ограничениеТот же путь разрешения, что и у .nvmrc.
package.json engines.nodeТочная версия или semver-ограничениеAuto-detect разрешает версию, удовлетворяющую ограничению Node.js engine.

Настроенные файлы auto-detect задаются параметром auto_detect. По умолчанию NVM for Windows проверяет .nvmrc, .node-version и package.json.

Порядок разрешения​

  1. Пользовательский alias (из nvm alias add)
  2. Зарезервированные alias (latest, lts, lts/<codename>)
  3. Частичные версии, расширенные до наилучшего подходящего релиза
  4. Semver-ограничения в сценариях с учётом ограничений (например engines.node или caret/tilde в detect-файлах)
  5. Чтение строки версии из настроенного detect-файла в текущем дереве каталогов (auto-detect)
  6. Применение auto_use, auto_install и связанных настроек при переключении или установке

Auto-detect версии Node.js по проекту​

В режиме shim NVM for Windows разрешает версию Node.js из auto-detect-файла (.nvmrc, .node-version, package.json и т. д.). Если версию определить нельзя, используется системная версия по умолчанию.

Закрепление версии Node.js за проектом​

nvm pin автоматически создаёт auto-detect-файлы. Команда принимает спецификатор версии, разрешает его и записывает точную версию в auto-detect-файл.

# задать активную версию, затем закрепить .nvmrc
nvm use 24
nvm pin 24 --file=.nvmrc

# задать package.json engines.node, engines.npm и эквивалентные devEngines
nvm pin 24 --file=package.json

Связанные материалы​