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

Режимы работы

NVM for Windows работает в одном из двух режимов: link или shim. Эти режимы определяют, как выполняются Node.js, менеджеры зависимостей и глобальные модули. Режим работы можно переключить в любой момент.

Установка режима работы
# Быстрый доступ
nvm use shim
nvm use link

# Также доступно в конфигурации nvm
nvm cfg set mode=shim
nvm cfg set mode=link

В этом режиме используются ссылки для определения активной системной версии 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 → Параметры безопасности → Локальные политики → Назначение прав пользователя → Создание символьных ссылок.
warning

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

Сравнение​

LinkShim
Задержка10ms25–35ms
Системная версия✔️✔️
Автоматическая установка✔️✔️
Автоопределение версии❌✔️
Особые права

SeCreateSymbolicLinkPrivilege
для symlink на UNC path
Нет

Footnotes​

  1. Задержка в основном из «универсального налога» Windows CreateProcessW. Сам исполняемый файл shim добавляет ~1 мс. ↩