Разрешение версий
NVM for Windows принимает несколько способов указать версию Node.js. В зависимости от контекста ввод может называть один релиз, обозначать линейку релизов или описывать допустимый диапазон. NVM for Windows разрешает этот ввод в конкретную версию Node.js перед выполнением операции.
Есть два вида ввода версии:
- Спецификатор версии — аргумент командной строки для операций.
- Ограничение версии — описание допустимых версий в файле проекта.
Спецификаторы версий
Спецификаторы версий — токены, передаваемые командам вроде install, use и uninstall.
| Форма | Пример | Разрешение |
|---|---|---|
| Последний релиз | latest | Новейший доступный релиз из индекса зеркала. |
| Последний LTS | lts | Новейший доступный LTS-релиз. |
| Именованная LTS-линейка | lts/iron | Новейший релиз из указанной LTS-линейки. |
| Пользовательский alias | legacy | Версия, назначенная через nvm alias add. |
| Только major | 24 | Новейший релиз вида 24.x.x. |
| Major.minor | 24.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. |
| Wildcard | 18.x | Любой релиз в линейке 18.x. |
| Any | * | Любая версия. |
| Exact | 24.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.
Порядок разрешения
- Пользовательский alias (из
nvm alias add) - Зарезервированные alias (
latest,lts,lts/<codename>) - Частичные версии, расширенные до наилучшего подходящего релиза
- Semver-ограничения в сценариях с учётом ограничений (например
engines.nodeили caret/tilde в detect-файлах) - Чтение строки версии из настроенного detect-файла в текущем дереве каталогов (auto-detect)
- Применение
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