Что использует/уважает файл .node-версии?

Я искал Qaru и GitHub (для node и nvm) для ответа, но безрезультатно.

В некоторых репозиториях (например, текстовом редакторе GitHub Atom), например, я столкнулся с файлом .node-version. Это похоже на стандартный файл .ruby-version, который работает с любым менеджером версий Ruby для правильной установки текущей версии Ruby для проекта.

Но насколько я могу судить по его документации, nvm (Node Менеджер версий) уважает только файл .nvmrc - в нем ничего не говорится о более общий .node-version файл. И нет упоминания о .node-version в node документации (и я бы не ожидал, что это произойдет, поскольку оно не поставляется с менеджером версий из коробки). Я не знаю ни одного другого менеджера версий node при интенсивном использовании.

Итак, мой вопрос: что такое .node-version? Какие инструменты действительно используют его? Это просто псевдоним для .nvmrc, или я что-то пропустил здесь?

Ответы

Ответ 1

Существует как минимум два менеджера версий для node.js, соблюдая .node-version файл:

  • avn - Автоматическое переключение версий Node
  • nodenv - еще один менеджер версий

Возможно, есть и другие менеджеры версий, но я не знаю о них.

Я не знаю, какой конкретный менеджер версий Atom использует. nodenv имеют больше звезд на github, но avn выглядит более зрелым и лучше поддерживается для меня, не говоря уже о его совместимости с n и nvm.

Ответ 2

(раскрытие: Я поддерживаю http://nvm.sh)

Наиболее часто используемые менеджеры версий для node, без сомнения, http://nvm.sh, https://www.npmjs.com/package/nave и https://www.npmjs.com/package/n.

nvm предназначен для изменения отдельных сеансов оболочки для использования нужной вам версии. nave предназначен для запуска подоболочек с загружаемой версией. n предназначен для переключения единой общесистемной версии node.

nvm использует файл .nvmrc, который, как .ruby-version, содержит строку версии x, которую вы обычно связываете с nvm use X или nvm install X. nvm use или nvm install сам по себе найдет файл .nvmrc, так как будет просто поиск nvm при открытии новой оболочки.

Появляется nave поддерживает файл .naverc, но я не слишком хорошо знаком с его использованием.

n, похоже, не поддерживает какой-либо такой конфигурации, но, поскольку он является общесистемным, на самом деле это не имеет особого смысла.


avn поддерживает .node-version и пытается обеспечить автоматическое переключение версии, подключившись к cd, после того, как nvm решил, что это слишком инвазивное поведение для включения.

Ответ 4

Используя nvm use или nvm install без версии, nvm сканирует дерево файлов, ищущих версию в файле .nvmrc, обычно приземляясь на stable в ~/.nvmrc.

Вот грубый 6-строчный патч git, который будет искать локальный файл .node-version, если не найден файл .nvmrc:

~/.nvm/nvm.sh, ≈line 280
1 file changed, 8 insertions(+), 2 deletions(-)

# Obtain nvm version from rc file
nvm_rc_version() {
   local NVMRC_PATH
   NVMRC_PATH="$(nvm_find_nvmrc)"
   if [ ! -e "${NVMRC_PATH}" ]; then
-    nvm_err "No .nvmrc file found"
-    return 1
+    local LOCAL_NODE_VERSION_DOTFILE_PATH
+    LOCAL_NODE_VERSION_DOTFILE_PATH="${PWD}/.node-version"
+    if [ -e "${LOCAL_NODE_VERSION_DOTFILE_PATH}" ]; then
+      NVMRC_PATH="${LOCAL_NODE_VERSION_DOTFILE_PATH}"
+    else
+      nvm_err "No .nvmrc file found"
+      return 1
+    fi

Нет cd-hooking, никаких дополнительных пакетов для установки, просто (что я считаю) разумным по умолчанию.