Режимы работы
NVM for Windows работает в одном из двух режимов: link или shim. Эти режимы определяют, как выполняются Node.js, менеджеры зависимостей и глобальные модули. Режим работы можно переключить в любой момент.
# Быстрый доступ
nvm use shim
nvm use link
# Также доступно в конфигурации nvm
nvm cfg set mode=shim
nvm cfg set mode=link
Link Mode
В этом режиме используются ссылки для определения активной системной версии node.exe. Ссылка входит в PATH. При выполнении nvm use меняется цель пути ссылки, а не сам путь. PATH не меняется.
Режим link максимально приближен к запуску node.exe «как поставляется» с nodejs.org. Задержка нулевая, но продвинутые возможности современного рабочего процесса из режима Shim недоступны.
В версии 2.0.0 добавлена стратегия создания ссылок с «запасным» вариантом.
Режим link NVM for Windows использует NTFS junction для разрешения версий Node.js. Junction не требуют особых прав, но не поддерживают UNC-пути (сетевые шары, mapped drives). Если хранилище Node.js настроено на UNC-путь, NVM for Windows создаёт symlink вместо junction. Для этого ОС нужна привилегия SeCreateSymbolicLinkPrivilege.
SeCreateSymbolicLinkPrivilege- У пользователей с правами администратора эта привилегия есть по умолчанию.
- Привилегия выдаётся при включении режима разработчика Windows.
- Можно выдать через групповую политику: Конфигурация компьютера → Параметры Windows → Параметры безопасности → Локальные политики → Назначение прав пользователя → Создание символьных ссылок.
NVM for Windows v2 не пытается повысить права (то есть не показывает запрос UAC) при неудачном создании symlink. Если права блокируют создание ссылки, пользователь получает нативное уведомление на рабочем столе с подсказками.
Shim Mode (default)
Режим shim даёт новый, упрощённый опыт разработчика. По сравнению с Link Mode он избегает редких требований к правам, но добавляет небольшую задержку (~25–35 мс суммарно). Для большинства сценариев эта задержка незаметна. Поэтому режим Shim рекомендуется большинству пользователей.
Большинство пользователей не заметят влияния задержки shim, поэтому режим shim рекомендуется большинству.
Возможности режима shim:
- Автовыбор закреплённых версий через
.nvmrc,.node-version,package.jsonили другие пользовательские файлы конфигурации runtime. - Автоустановка отсутствующих версий при
nvm use. (Опционально) - Единая обработка несовпадений менеджеров пакетов.
- Ограничение прав Node.js/V8. (Опционально)
- Доверие издателю: проверка издателя node.exe, чтобы предотвратить подмену недоверенным node.exe.
- Нативное журналирование событий.
- Единые/настраиваемые периоды cooldown для всех основных менеджеров пакетов (npm/yarn/pnpm). Требует дополнение Governance, доступно с сентября 2026.
В Windows действует «универсальный налог на задержку». Любой исполняемый файл запускается через CreateProcessW. Налог платится при запуске shim и снова, когда shim запускает node.exe. В среднем CreateProcessW занимает 15 мс. Shim добавляет 1–3 мс на определение нужной версии Node.js и безопасную передачу команды.
15ms (shim CreateProcessW) + 3ms (логика shim) + 15ms (node.exe CreateProcessW) = 33ms
Сравнение
| Link | Shim | |
|---|---|---|
| Задержка1 | 0ms | 25–35ms |
| Системная версия | ✔️ | ✔️ |
| Автоматическая установка | ✔️ | ✔️ |
| Автоопределение версии | ❌ | ✔️ |
| Особые права | SeCreateSymbolicLinkPrivilegeдля symlink на UNC path | Нет |