Что использует/уважает файл .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
решил, что это слишком инвазивное поведение для включения.
Ответ 3
Direnv поддерживает файлы .node-version
и .nvmrc
. Direnv - это все, что я использую для загрузки проектных версий Node.js.
https://github.com/direnv/direnv/wiki/node#load-nodejs-version-from-a-node-version-or-nvmrc-file
Ответ 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, никаких дополнительных пакетов для установки, просто (что я считаю) разумным по умолчанию.