2014-12-11 3 views
15

Я искал Stack Overflow и GitHub (для узла и nvm) для ответа, но безрезультатно.Что использует/уважает файл .node-версии?

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

But as far as I can tell from its documentation, nvm (Node Version Manager) только уважает файл .nvmrc - в нем ничего не говорится о более общем файле .node-version. И в документации узла нет упоминания о .node-version (и я не ожидал, что это произойдет, поскольку оно не поставляется с менеджером версий из коробки). Я не знаю о любом другом менеджере версий узлов при интенсивном использовании.

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

ответ

19

Есть по крайней мере две версии менеджеров для Node.js, уважая .node-version файл:

  • avn - Автоматический узел коммутации Версия
  • nodenv - еще одна версия менеджеров

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

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

+2

[ndenv] (https://github.com/riywo/ndenv) также использует файл '.node-version'. – paulodiovani

+1

Я рекомендую 'nodenv' - он также работает как' rbenv' и 'pyenv', чтобы вы могли переносить свои знания. –

16

(раскрытие: Я сохранить http://nvm.sh)

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

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

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

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

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


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

+0

Как вы меняете каталог, чтобы переключиться на .nvmrc так же, как rvm? – justingordon

+0

У вас нет, не автоматически. 'nvm' не является навязчивым, как' rvm'. Возможно, вы можете перезаписать встроенный 'cd' для запуска' nvm use', но как часто вы используете cding, а не используете несколько вкладок оболочки? – LJHarb

+1

Приятно не забывать устанавливать версию узла, когда вы входите в проект. Ничего хуже, чем убивать часы, пытаясь понять, почему ваше приложение внезапно не работает, когда все это время вы забыли изменить версию своего узла на версию, над которой работает ваша работа. Эта нехватка поддержки для автоматического переключения позволяет мне переходить с nvm на avn. – Catfish

0

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

Вот грубый 6-линия мерзавец патч, который будет искать локальный .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-закрепляя, никаких дополнительных пакетов для установки, просто (то, что я найти) разумный дефолт.