Введение
О
Установка и обновление
Дополнительные примечания
Устранение неполадок в Linux
Устранение неполадок в macOS
Анзибль
Установить и обновить скрипт
Проверка установки
Важные примечания
Установка Git
Ручная установка
Обновление вручную
Использование
Автоматический вызов nvm use
в каталоге с файлом .nvmrc
бить
зш
рыба
Передать заголовок авторизации зеркалу
Сохранение индивидуальных цветов
Подавление цветного вывода
Долгосрочная поддержка
Миграция глобальных пакетов во время установки
Глобальные пакеты по умолчанию из файла при установке
io.js
Системная версия узла
Листинг версий
Настройка пользовательских цветов
Восстановление ПУТИ
Установить версию узла по умолчанию
Используйте зеркало двоичных файлов узла
.nvmrc
Более глубокая интеграция оболочки
Запуск тестов
Переменные среды
Завершение Баша
Использование
Проблемы совместимости
Установка nvm в Alpine Linux
Альпийский Linux 3.13+
Альпийский Linux 3.5–3.12
Удаление / Удаление
Удаление вручную
Docker для среды разработки
Проблемы
Устранение неполадок macOS
Устранение неполадок WSL
Мейнтейнеры
Поддержка проекта
Корпоративная поддержка
Лицензия
Уведомление об авторских правах
nvm
позволяет быстро устанавливать и использовать различные версии узла через командную строку.
Пример:
$ нвм использовать 16 Теперь используем узел v16.9.1 (npm v7.21.1) $узел -v v16.9.1 $ нвм использовать 14 Теперь используем узел v14.18.0 (npm v6.14.15) $узел -v v14.18.0 $ нвм установить 12 Теперь используем узел v12.22.6 (npm v6.14.5) $узел -v v12.22.6
Вот так просто!
nvm — это менеджер версий node.js, предназначенный для установки для каждого пользователя и запускаемый для каждой оболочки. nvm
работает в любой POSIX-совместимой оболочке (sh, Dash, ksh, zsh, bash), в частности на этих платформах: unix, macOS и Windows WSL.
Чтобы установить или обновить nvm, вам следует запустить сценарий установки. Для этого вы можете загрузить и запустить скрипт вручную или использовать следующую команду cURL или Wget:
локон -о- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | бить
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | бить
Выполнение любой из приведенных выше команд загружает сценарий и запускает его. Сценарий клонирует репозиторий nvm в ~/.nvm
и пытается добавить исходные строки из приведенного ниже фрагмента в правильный файл профиля ( ~/.bash_profile
, ~/.zshrc
, ~/.profile
или ~/.bashrc
). .
экспорт NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"[ -s "$ NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # Это загружает nvm
Если присутствует переменная среды $XDG_CONFIG_HOME
, туда будут помещены файлы nvm
.
Вы можете добавить --no-use
в конец приведенного выше сценария (... nvm.sh --no-use
), чтобы отложить использование nvm
до тех пор, пока вы не use
его вручную.
Вы можете настроить источник установки, каталог, профиль и версию, используя переменные NVM_SOURCE
, NVM_DIR
, PROFILE
и NODE_VERSION
. Например: curl ... | NVM_DIR="path/to/nvm"
. Убедитесь, что NVM_DIR
не содержит косой черты.
Установщик может использовать git
, curl
или wget
для загрузки nvm
, в зависимости от того, что доступно.
Вы можете указать установщику не редактировать конфигурацию вашей оболочки (например, если вы уже получаете завершения через плагин zsh nvm), установив PROFILE=/dev/null
перед запуском сценария install.sh
. Вот пример однострочной команды для этого: PROFILE=/dev/null bash -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash'
В Linux, если после запуска сценария установки вы получаете сообщение nvm: command not found
или не видите ответа от вашего терминала после ввода command -v nvm
, просто закройте текущий терминал, откройте новый терминал и повторите попытку проверки. Альтернативно вы можете запустить следующие команды для разных оболочек в командной строке:
bash : source ~/.bashrc
zsh : source ~/.zshrc
кш : . ~/.profile
Они должны принять команду nvm
.
Начиная с OS X 10.9, /usr/bin/git
предварительно задан инструментами командной строки Xcode, что означает, что мы не можем правильно определить, установлен ли Git или нет. Вам необходимо вручную установить инструменты командной строки Xcode перед запуском сценария установки, иначе произойдет сбой. (см. № 1782)
Если после запуска сценария установки вы получаете nvm: command not found
, причиной может быть одна из следующих причин:
Начиная с macOS 10.15, оболочкой по умолчанию является zsh
, и nvm будет искать .zshrc
для обновления, по умолчанию ничего не установлено. Создайте его с помощью touch ~/.zshrc
и снова запустите сценарий установки.
Если вы используете bash, предыдущую оболочку по умолчанию, в вашей системе может не быть файлов .bash_profile
или .bashrc
, в которых настроена команда. Создайте один из них, touch ~/.bash_profile
, или touch ~/.bashrc
и снова запустите сценарий установки. Затем бегите . ~/.bash_profile
или . ~/.bashrc
чтобы получить команду nvm
.
Ранее вы использовали bash
, но у вас установлен zsh
. Вам нужно вручную добавить эти строки в ~/.zshrc
и запустить . ~/.zshrc
.
Возможно, вам придется перезапустить экземпляр терминала или запустить . ~/.nvm/nvm.sh
. Перезапуск терминала/открытие новой вкладки/окна или запуск исходной команды загрузит команду и новую конфигурацию.
Если вышеперечисленное не помогло, возможно, вам придется перезапустить экземпляр терминала. Попробуйте открыть новую вкладку/окно в терминале и повторите попытку.
Если вышеописанное не помогло решить проблему, вы можете попробовать следующее:
Если вы используете bash, возможно, ваш .bash_profile
(или ~/.profile
) неправильно использует ваш ~/.bashrc
. Вы можете исправить это, добавив к нему source ~/<your_profile_file>
или выполнив следующий шаг ниже.
Попробуйте добавить фрагмент из раздела установки, который находит правильный каталог nvm и загружает nvm, в ваш обычный профиль ( ~/.bash_profile
, ~/.zshrc
, ~/.profile
или ~/.bashrc
).
Дополнительную информацию об этой проблеме и возможных способах ее решения можно найти здесь.
Примечание. Для компьютеров Mac с чипом Apple Silicon узел начал предлагать пакеты Arm64 Arch Darwin, начиная с версии 16.0.0, и экспериментальную поддержку Arm64 при компиляции из исходного кода, начиная с версии 14.17.0. Если вы столкнулись с проблемами при установке узла с помощью nvm
, возможно, вы захотите обновить его до одной из этих версий или более поздней.
Вы можете использовать задачу:
- имя: Установить nvm ansible.builtin.shell: > curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash args: создает: "{{ ansible_env.HOME }}/.nvm/nvm.sh"
Чтобы убедиться, что nvm установлен, выполните:
команда -v нвм
который должен вывести nvm
если установка прошла успешно. Обратите внимание, что which nvm
не будет работать, поскольку nvm
— это функция оболочки, а не исполняемый двоичный файл.
Примечание. Если в Linux после запуска сценария установки вы получаете nvm: command not found
или не видите ответа от вашего терминала после ввода command -v nvm
, просто закройте текущий терминал, откройте новый терминал и повторите попытку проверки.
Если вы используете систему без предварительно упакованного двоичного файла, что означает, что вы собираетесь установить node или io.js из его исходного кода, вам необходимо убедиться, что в вашей системе есть компилятор C++. Для OS X будет работать Xcode, для GNU/Linux на базе Debian/Ubuntu работают пакеты build-essential
и libssl-dev
.
Примечание. В некоторых случаях nvm
также поддерживает Windows. Он должен работать через WSL (подсистема Windows для Linux) в зависимости от версии WSL. Он также должен работать с GitBash (MSYS) или Cygwin. В противном случае для Windows существует несколько альтернатив, которые нами не поддерживаются и не разрабатываются:
NVM-окна
нодист
НВС
Примечание: nvm
также не поддерживает Fish (см. №303). Существуют альтернативы, которые нами не поддерживаются и не развиваются:
bass позволяет использовать утилиты, написанные для Bash, в рыбной оболочке.
fast-nvm-fish работает только с номерами версий (не псевдонимами), но не сильно замедляет запуск оболочки.
плагин-nvm плагин для Oh My Fish, который делает nvm и его дополнения доступными в оболочке рыбы
fnm — менеджер версий рыбы для рыбаков
fish-nvm — оболочка nvm для рыбы, задерживает получение nvm до тех пор, пока он не будет фактически использован.
Примечание. У нас все еще есть некоторые проблемы с FreeBSD, поскольку для FreeBSD не существует официального готового двоичного файла, а для сборки из исходного кода могут потребоваться исправления; см. билет выпуска:
[#900] [Ошибка] узел во FreeBSD может нуждаться в исправлении
узелjs/узел#3716
Примечание. Если в OS X у вас не установлен Xcode и вы не хотите загружать файл размером ~4,3 ГБ, вы можете установить Command Line Tools
. Вы можете прочитать эту публикацию в блоге о том, как это сделать:
Как установить инструменты командной строки в OS X Mavericks и Yosemite (без Xcode)
Примечание. В OS X, если у вас установлен «системный» узел и вы хотите установить модули глобально, имейте в виду, что:
При использовании nvm
вам не требуется sudo
для глобальной установки модуля с помощью npm -g
, поэтому вместо sudo npm install -g grunt
выполните вместо этого npm install -g grunt
Если у вас есть файл ~/.npmrc
, убедитесь, что он не содержит каких-либо настроек prefix
(который несовместим с nvm
).
Вы можете (но не должны?) сохранить предыдущую установку «системного» узла, но nvm
будет доступен только для вашей учетной записи пользователя (той, которая использовалась для установки nvm). Это может привести к несоответствию версий, поскольку другие пользователи будут использовать /usr/local/lib/node_modules/*
а не вашу учетную запись пользователя, используя ~/.nvm/versions/node/vX.XX/lib/node_modules/*
Установка Homebrew не поддерживается. Если у вас возникли проблемы с установленным в домашних условиях nvm
, пожалуйста brew uninstall
его и установите, следуя инструкциям ниже, прежде чем сообщать о проблеме.
Примечание. Если вы используете zsh
вы можете легко установить nvm
как плагин zsh. Установите zsh-nvm
и запустите nvm upgrade
для обновления.
Примечание. Версии Git до версии 1.7 могут столкнуться с проблемой клонирования источника nvm
из GitHub через протокол https, а также существует другое поведение git до версии 1.6, а git до версии 1.17.10 не может клонировать теги, поэтому минимум необходимая версия git — v1.7.10. Если вас интересует проблема, о которой мы здесь упомянули, обратитесь к статье об ошибках клонирования HTTPS на GitHub.
Если у вас установлен git
(требуется git v1.7.10+):
клонируйте этот репозиторий в корень вашего профиля пользователя
cd ~/
откуда угодно, затем git clone https://github.com/nvm-sh/nvm.git .nvm
cd ~/.nvm
и проверьте последнюю версию с помощью git checkout v0.40.1
активируйте nvm
, загрузив его из своей оболочки: . ./nvm.sh
Теперь добавьте эти строки в файл ~/.bashrc
, ~/.profile
или ~/.zshrc
, чтобы он автоматически получался при входе в систему: (возможно, вам придется добавить более одного из вышеуказанных файлов)
экспорт NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # Это загружает nvm[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # Это загружает nvm bash_completion
Для полностью ручной установки выполните следующие строки, чтобы сначала клонировать репозиторий nvm
в $HOME/.nvm
, а затем загрузить nvm
:
экспортировать NVM_DIR="$HOME/.nvm" && ( git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR" cd "$NVM_DIR" git checkout `git описать --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`) && . "$NVM_DIR/nvm.sh"
Теперь добавьте эти строки в файл ~/.bashrc
, ~/.profile
или ~/.zshrc
, чтобы он автоматически получался при входе в систему: (возможно, вам придется добавить более одного из вышеуказанных файлов)
экспорт NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # Это загружает nvm[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # Это загружает nvm bash_completion
Для обновления вручную с помощью git
(требуется git v1.7.10+):
перейдите в $NVM_DIR
снести последние изменения
проверьте последнюю версию
активировать новую версию
( компакт-диск "$NVM_DIR" git fetch --происхождение тегов git checkout `git описать --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`) && . "$NVM_DIR/nvm.sh"
Чтобы загрузить, скомпилировать и установить последнюю версию узла, сделайте следующее:
nvm install node # «узел» — это псевдоним последней версии
Чтобы установить определенную версию узла:
nvm install 14.7.0# или 16.3.0, 12.22.1 и т. д.
Чтобы установить псевдоним:
псевдоним nvm my_alias v14.4.0
Убедитесь, что ваш псевдоним не содержит пробелов и косых черт.
Первая установленная версия становится версией по умолчанию. Новые оболочки запускаются с версией узла по умолчанию (например, nvm alias default
).
Вы можете просмотреть доступные версии с помощью ls-remote
:
NVM ls-удаленный
А затем в любой новой оболочке просто используйте установленную версию:
узел использования nvm
Или вы можете просто запустить его:
узел запуска nvm --version
Или вы можете запустить любую произвольную команду в подоболочке с желаемой версией узла:
узел nvm exec 4.2 --версия
Вы также можете получить путь к исполняемому файлу, куда он был установлен:
нвм который 12.22
Вместо указателя версии, например «14.7», «16.3» или «12.22.1», вы можете использовать следующие специальные псевдонимы по умолчанию с nvm install
, nvm use
, nvm run
, nvm exec
, nvm which
и т. д.:
node
: устанавливает последнюю версию node
iojs
: устанавливает последнюю версию io.js
stable
: этот псевдоним устарел и применим только к node
v0.12
и более ранних версий. В настоящее время это псевдоним node
.
unstable
: этот псевдоним указывает на node
v0.11
— последний «нестабильный» выпуск узла, поскольку после 1.0 все версии узла стабильны. (в SemVer версии сообщают о поломке, а не о стабильности).
У узла есть график долгосрочной поддержки (LTS). Вы можете ссылаться на версии LTS в псевдонимах и файлах .nvmrc
с обозначением lts/*
для последних версий LTS и lts/argon
для выпусков LTS, например, из строки «argon». . Кроме того, следующие команды поддерживают аргументы LTS:
nvm install --lts
/ nvm install --lts=argon
/ nvm install 'lts/*'
/ nvm install lts/argon
nvm uninstall --lts
/ nvm uninstall --lts=argon
/ nvm uninstall 'lts/*'
/ nvm uninstall lts/argon
nvm use --lts
/ nvm use --lts=argon
/ nvm use 'lts/*'
/ nvm use lts/argon
nvm exec --lts
/ nvm exec --lts=argon
/ nvm exec 'lts/*'
/ nvm exec lts/argon
nvm run --lts
/ nvm run --lts=argon
/ nvm run 'lts/*'
/ nvm run lts/argon
nvm ls-remote --lts
/ nvm ls-remote --lts=argon
nvm ls-remote 'lts/*'
/ nvm ls-remote lts/argon
nvm version-remote --lts
/ nvm version-remote --lts=argon
/ nvm version-remote 'lts/*'
/ nvm version-remote lts/argon
Каждый раз, когда ваша локальная копия nvm
подключается к https://nodejs.org, она заново создает соответствующие локальные псевдонимы для всех доступных линий LTS. Эти псевдонимы (хранящиеся в $NVM_DIR/alias/lts
) управляются nvm
, и вам не следует изменять, удалять или создавать эти файлы — ожидайте, что ваши изменения будут отменены, и ожидайте, что вмешательство в эти файлы приведет к ошибкам, которые, вероятно, будут не поддерживаться.
Чтобы получить последнюю версию узла LTS и перенести существующие установленные пакеты, используйте
nvm install --reinstall-packages-from=текущий 'lts/*'
Если вы хотите установить новую версию Node.js и перенести пакеты npm из предыдущей версии:
nvm install --reinstall-packages-from=узел узла
Сначала будет использоваться «узел версии nvm» для идентификации текущей версии, из которой вы переносите пакеты. Затем он разрешает новую версию для установки с удаленного сервера и устанавливает ее. Наконец, он запускает «nvm reinstall-packages», чтобы переустановить пакеты npm из предыдущей версии Node в новую.
Вы также можете установить и перенести пакеты npm из определенных версий Node следующим образом:
nvm install --reinstall-packages-from=5 6 nvm install --reinstall-packages-from=iojs v4.2
Обратите внимание, что переустановка пакетов явно не обновляет версию npm — это необходимо для того, чтобы npm случайно не обновился до сломанной версии для новой версии узла.
Чтобы одновременно обновить npm, добавьте флаг --latest-npm
, например:
nvm install --reinstall-packages-from=default --latest-npm 'lts/*'
или вы можете в любой момент запустить следующую команду, чтобы получить последнюю поддерживаемую версию npm для текущей версии узла:
nvm install-latest-npm
Если вы уже получили сообщение об ошибке «npm не поддерживает Node.js», вам необходимо (1) вернуться к предыдущей версии узла ( nvm ls
& nvm use <your latest _working_ version from the ls>
), (2) удалите вновь созданную версию узла ( nvm uninstall <your _broken_ version of node from the ls>
), затем (3) повторно запустите nvm install
с помощью команды --latest-npm
флаг.
Если у вас есть список пакетов по умолчанию, которые вы хотите устанавливать каждый раз при установке новой версии, мы это тоже поддерживаем — просто добавьте имена пакетов, по одному в строке, в файл $NVM_DIR/default-packages
. Вы можете добавить все, что npm примет в качестве аргумента пакета в командной строке.
# $NVM_DIR/default-packagesrimraf объект-осмотр @ 1.0.2 Стивемао/левая панель
Если вы хотите установить io.js:
nvm установить iojs
Если вы хотите установить новую версию io.js и перенести пакеты npm из предыдущей версии:
nvm install --reinstall-packages-from=iojs iojs
Те же рекомендации, упомянутые для миграции пакетов npm в узле, применимы и к io.js.
Если вы хотите использовать версию узла, установленную в системе, вы можете использовать специальный псевдоним по умолчанию «system»:
система использования nvm nvm запустить систему --версия
Если вы хотите посмотреть, какие версии установлены:
нвм лс
Если вы хотите увидеть, какие версии доступны для установки:
NVM ls-удаленный
Вы можете установить пять цветов, которые будут использоваться для отображения информации о версии и псевдониме. Эти цвета заменяют цвета по умолчанию. Начальные цвета: gbyre
Цветовые коды:
r/R = red / bold red g/G = green / bold green b/B = blue / bold blue c/C = cyan / bold cyan m/M = magenta / bold magenta y/Y = yellow / bold yellow k/K = black / bold black e/W = light grey / white
nvm набор цветов rgBcm
Если вы хотите, чтобы пользовательские цвета сохранялись после завершения работы оболочки, экспортируйте переменную NVM_COLORS
в профиль оболочки. Например, если вы хотите использовать голубой, пурпурный, зеленый, жирный красный и жирный желтый, добавьте следующую строку:
экспорт NVM_COLORS='cmgRY'
nvm help (or -h or --help)
, nvm ls
, nvm ls-remote
и nvm alias
обычно выдают цветной вывод. Вы можете отключить цвета с помощью опции --no-colors
(или установив переменную среды TERM=dumb
):
nvm ls --no-colors nvm help --no-colors TERM=тупой nvm ls
Чтобы восстановить PATH, вы можете деактивировать его:
деактивация нвм
Чтобы установить версию Node по умолчанию для использования в любой новой оболочке, используйте псевдоним «default»:
узел nvm alias default # это относится к последней установленной версии nodenvm alias default 18 # это относится к последней установленной версии v18.x nodenvm alias default 18.12 # это относится к последней установленной версии v18.12.x узла
Чтобы использовать зеркало двоичных файлов узла, установите $NVM_NODEJS_ORG_MIRROR
:
экспортировать NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist узел установки nvm NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist установка nvm 4.2
Чтобы использовать зеркало двоичных файлов io.js, установите $NVM_IOJS_ORG_MIRROR
:
экспортировать NVM_IOJS_ORG_MIRROR=https://iojs.org/dist nvm установить iojs-v1.0.3 NVM_IOJS_ORG_MIRROR=https://iojs.org/dist nvm install iojs-v1.0.3
nvm use
по умолчанию не создает «текущую» символическую ссылку. Установите для $NVM_SYMLINK_CURRENT
значение «true», чтобы включить это поведение, что иногда полезно для IDE. Обратите внимание, что использование nvm
на нескольких вкладках оболочки с включенной этой переменной среды может вызвать состояние гонки.
Чтобы передать заголовок авторизации на URL-адрес зеркала, установите $NVM_AUTH_HEADER
NVM_AUTH_HEADER="Носитель секретного токена" Узел установки nvm
Вы можете создать файл .nvmrc
содержащий номер версии узла (или любую другую строку, которую понимает nvm
; подробности см. в nvm --help
) в корневом каталоге проекта (или любом родительском каталоге). Затем nvm use
, nvm install
, nvm exec
, nvm run
и nvm which
будет использовать версию, указанную в файле .nvmrc
, если в командной строке не указана версия.
Например, чтобы установить по умолчанию для nvm последнюю версию 5.9, последнюю версию LTS или последнюю версию узла для текущего каталога:
$ echo "5.9" > .nvmrc $ echo "lts/*" > .nvmrc # по умолчанию используется последняя версия LTS $ echo "node" > .nvmrc # по умолчанию используется последняя версия
[Примечание: в этих примерах предполагается POSIX-совместимая версия оболочки echo
. Если вы используете среду разработки Windows cmd
, например, файл .nvmrc
используется для настройки удаленного развертывания Linux, имейте в виду, что "
будут скопированы, что приведет к недопустимому файлу. Удалите их.]
Затем, когда вы запустите nvm, используйте:
использование $ нвм Найден файл /path/to/project/.nvmrc версии <5.9>. Теперь используется узел v5.9.1 (npm v3.7.3).
Запуск установки nvm также переключится на правильную версию, но если правильная версия узла еще не установлена, она установит ее за вас.
$ нвм установить Найден файл /path/to/project/.nvmrc версии <5.9>. Загрузка и установка узла v5.9.1... Загрузка https://nodejs.org/dist/v5.9.1/node-v5.9.1-linux-x64.tar.xz...########### ################################################ ###################### 100,0% Вычисление контрольной суммы с помощью sha256sum Контрольные суммы совпадают! Теперь используется узел v5.9.1 (npm v3.7.3)
nvm use
и др. ал. будет перемещаться по структуре каталогов вверх от текущего каталога в поисках файла .nvmrc
. Другими словами, при запуске nvm use
et. ал. в любом подкаталоге каталога с .nvmrc
приведет к использованию этого .nvmrc
.
Содержимое файла .nvmrc
должно содержать ровно одну <version>
(как описано в nvm --help
), за которой следует перевод строки. Файлы .nvmrc
также могут содержать комментарии. Разделителем комментариев является #
, и он и любой текст после него, а также пустые строки, начальные и конечные пробелы будут игнорироваться при синтаксическом анализе.
Пары ключ/значение с использованием =
также разрешены и игнорируются, но зарезервированы для использования в будущем и могут вызвать ошибки проверки в будущем.
Запустите npx nvmrc
, чтобы проверить файл .nvmrc
. Если результаты этого инструмента не согласуются с nvm, в одном из них есть ошибка — сообщите о проблеме.
Вы можете использовать avn
для глубокой интеграции в вашу оболочку и автоматического вызова nvm
при смене каталогов. avn
не поддерживается сопровождающими nvm
. Пожалуйста, сообщайте о проблемах команде avn
.
Вы также можете использовать nvshim
для настройки контейнеров node
, npm
и npx
для автоматического использования конфигурации nvm
в текущем каталоге. nvshim
не поддерживается сопровождающими nvm
. Пожалуйста, сообщайте о проблемах команде nvshim
.
Если вы предпочитаете более легкое решение, приведенные ниже рецепты были предоставлены пользователями nvm
. Они не поддерживаются сопровождающими nvm
. Однако мы принимаем запросы на получение дополнительных примеров.
nvm use
в каталоге с файлом .nvmrc
В своем профиле ( ~/.bash_profile
, ~/.zshrc
, ~/.profile
или ~/.bashrc
) добавьте следующее для nvm use
при каждом входе в новый каталог:
Поместите следующее в конец $HOME/.bashrc
:
cdnvm() { команда cd "$@" || вернуть $? nvm_path="$(nvm_find_up .nvmrc | команда tr -d 'n')" # Если файла .nvmrc нет, используйте версию nvm по умолчанию, если [[ ! $nvm_path = *[^[:space:]]* ]]; затем объявите default_version default_version="$(nvm version default)" # Если версии по умолчанию нет, установите для нее `node` # Будет использоваться последняя версия на вашем компьютере, если [ $default_version = 'N/A' ]; затем узел по умолчанию псевдонима nvm default_version=$(nvm version default) fi # Если текущая версия не является версией по умолчанию, установите ее на использование версии по умолчанию if [ "$(nvm current)" != "${default_version}" ]; затем nvm use default fi elif [[ -s "${nvm_path}/.nvmrc" && -r "${nvm_path}/.nvmrc" ]]; затем объявите nvm_version nvm_version=$(<"${nvm_path}"/.nvmrc) define locally_resolved_nvm_version # `nvm ls` проверит все локально доступные версии # Если существует несколько совпадающих версий, выберите последнюю # Удалите `->` и ` *` символы и пробелы # `locally_resolved_nvm_version` будет `N/A`, если локальные версии не найдены locally_resolved_nvm_version=$(nvm ls --no-colors "${nvm_version}" | команда Tail -1 | команда tr -d '->*' | команда tr -d '[:space:]') # Если это так еще не установлен, установите его # `nvm install` будет неявно использовать только что установленную версию, если [ "${locally_resolved_nvm_version}" = 'Н/Д']; затем nvm install "${nvm_version}"; elif [ "$(nvm current)" != "${locally_resolved_nvm_version}" ]; затем nvm использует "${nvm_version}"; fi fi}alias cd='cdnvm'cdnvm "$PWD" || Выход
Этот псевдоним будет искать «вверх» вашего текущего каталога, чтобы обнаружить файл .nvmrc
. Если он его найдет, он переключится на эту версию; в противном случае будет использоваться версия по умолчанию.
Эта функция оболочки будет установлена (при необходимости), и nvm use
указанную версию узла, если будет найден .nvmrc
, а в противном случае nvm use default
.
Поместите это в свой $HOME/.zshrc
, чтобы автоматически вызывать nvm use
всякий раз, когда вы входите в каталог, содержащий файл .nvmrc
со строкой, указывающей nvm, какой узел use
:
# поместите это после инициализации nvm!autoload -U add-zsh-hookload-nvmrc() { local nvmrc_path nvmrc_path="$(nvm_find_nvmrc)" if [ -n "$nvmrc_path" ]; затем локальная nvmrc_node_version nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")") if [ "$nvmrc_node_version" = "N/A"]; затем nvm install elif [ "$nvmrc_node_version" != "$(версия nvm)" ]; затем nvm use fi elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(версия nvm)" != "$(версия nvm по умолчанию)" ]; затем отобразите «Возврат к версии nvm по умолчанию» nvm использует fi по умолчанию} add-zsh-hook chpwd load-nvmrc нагрузка-nvmrc
Для этого необходимо, чтобы у вас был установлен бас.
# ~/.config/fish/functions/nvm.fishfunction nvm источник баса ~/.nvm/nvm.sh --no-use ';' nvm $argvend# ~/.config/fish/functions/nvm_find_nvmrc.fishfunction nvm_find_nvmrc источник баса ~/.nvm/nvm.sh --no-use ';' nvm_find_nvmrcend# ~/.config/fish/functions/load_nvm.fishfunction load_nvm --on-variable="PWD" set -l default_node_version (версия nvm по умолчанию) set -l node_version (версия nvm) set -l nvmrc_path (nvm_find_nvmrc) if test -n "$nvmrc_path" установить -l nvmrc_node_version (версия nvm (cat $nvmrc_path)) если тест "$nvmrc_node_version" = "Н/Д" установка nvm (cat $nvmrc_path) иначе, если проверка "$nvmrc_node_version" != "$node_version" nvm используйте $nvmrc_node_version end else if test "$node_version" != "$default_node_version" echo "Возврат к версии узла по умолчанию" nvm use default endend# ~/.config/fish/config.fish# Вы должны вызвать его при инициализации, иначе прослушивание переключения каталогов не будет работатьload_nvm > /dev/stderr
Тесты пишутся в Urchin. Установите Urchin (и другие зависимости) следующим образом:
npm install
Есть медленные тесты и быстрые тесты. Медленные тесты выполняют такие действия, как установка узла и проверка использования правильных версий. Быстрые тесты имитируют это, чтобы проверить такие вещи, как псевдонимы и удаление. Из корня репозитория nvm git запустите быстрые тесты следующим образом:
npm run test/fast
Запустите медленные тесты следующим образом:
npm run test/slow
Запустите все тесты следующим образом:
npm test
Примечание: избегайте запуска nvm во время выполнения тестов.
nvm предоставляет следующие переменные среды:
NVM_DIR
— каталог установки nvm.
NVM_BIN
— где установлены node, npm и глобальные пакеты для активной версии узла.
NVM_INC
— каталог включаемых файлов узла (полезно для создания дополнений C/C++ для узла).
NVM_CD_FLAGS
— используется для обеспечения совместимости с zsh.
NVM_RC_VERSION
— версия из файла .nvmrc, если используется.
Кроме того, nvm изменяет PATH
и, если они есть, MANPATH
и NODE_PATH
при смене версий.
Для активации вам необходимо использовать bash_completion
:
[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion
Поместите приведенную выше строку исходного кода чуть ниже строки исходного кода для nvm в вашем профиле ( .bashrc
, .bash_profile
).
нвм:
Вкладка
$ nvm
псевдоним деактивировать список установки-удаленная переустановка-пакеты удалить версию кэш exec install-latest-npm ls run выгрузить удаленную версию текущий список справки ls-remote unalias, используйте который
псевдоним НВМ:
Вкладка
$ nvm alias
по умолчанию iojs lts/* lts/argon lts/boron lts/carbon lts/dubnium lts/erbium узел стабильный нестабильный
$ nvm alias my_alias
Tab
v10.22.0 v12.18.3 v14.8.0
использование нвм:
$ nvm use
вкладку
my_alias default v10.22.0 v12.18.3 v14.8.0
удаление НВМ:
$ nvm uninstall
вкладка удаления
my_alias default v10.22.0 v12.18.3 v14.8.0
nvm
столкнется с некоторыми проблемами, если у вас установлены нестандартные настройки. (см. № 606). Известно, что следующие проблемы вызывают:
Внутри ~/.npmrc
:
префикс = 'некоторые/путь'
Переменные среды:
$NPM_CONFIG_PREFIX$PREFIX
Настройки оболочки:
установить -е
Чтобы обеспечить наилучшую производительность (и другие оптимизации), nvm загрузит и установит предварительно скомпилированные двоичные файлы для Node (и npm) при запуске nvm install X
Проект Node компилирует, тестирует и размещает/предоставляет эти предварительно скомпилированные двоичные файлы, созданные для основных/традиционных дистрибутивов Linux (таких как Debian, Ubuntu, CentOS, RedHat и др.).
Alpine Linux, в отличие от основных/традиционных дистрибутивов Linux, основан на BusyBox, очень компактном (~5 МБ) дистрибутиве Linux. BusyBox (и, следовательно, Alpine Linux) использует стек C/C++, отличный от большинства основных/традиционных дистрибутивов Linux — musl. Это делает двоичные программы, созданные для таких основных/традиционных систем, несовместимыми с Alpine Linux, поэтому мы не можем просто nvm install X
в Alpine Linux и ожидать, что загруженный двоичный файл будет работать правильно — вы, скорее всего, увидите ошибки «... не существует», если вы попробуй это.
Для nvm install
существует флаг -s
, который запрашивает nvm загрузку исходного кода Node и его локальную компиляцию.
Если установка nvm в Alpine Linux по-прежнему является тем, что вам нужно или нужно, вы сможете добиться этого, запустив следующую команду из оболочки Alpine Linux, в зависимости от того, какую версию вы используете:
apk add -U curl bash ca-certificates openssl ncurses coreutils python3 make gcc g++ libgcc linux-headers grep util-linux binutils findutils завиток -о- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | бить
apk add -U curl bash ca-certificates openssl ncurses coreutils python2 make gcc g++ libgcc linux-headers grep util-linux binutils findutils локон -о- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | бить
Примечание. Alpine 3.5 может устанавливать только версии NodeJS до v6.9.5, Alpine 3.6 может устанавливать только версии до v6.10.3, Alpine 3.7 устанавливает версии до v8.9.3, Alpine 3.8 устанавливает версии до v8.14.0, Alpine 3.9 устанавливает версии до v10.19.0, Alpine 3.10 устанавливает версии до v10.24.1, Alpine 3.11 устанавливает версии до v12.22.6, Alpine 3.12 устанавливает версии до v12.22.12, Alpine 3.13 и 3.14 устанавливает версии до v14.20.0, Alpine 3.15 и 3.16 устанавливает версии до v16.16.0 ( это все версии в основной ветке ). Alpine 3.5–3.12 требовал пакета python2
для сборки NodeJS, так как это более старые версии для сборки. Alpine 3.13+ требует, чтобы python3
успешно создавал новые версии NodeJS, но вы можете использовать python2
с Alpine 3.13+, если вам нужно собрать версии узла, поддерживаемые в Alpine 3.5–3.15, вам просто нужно указать, какую версию NodeJS вам нужно установить. сценарий установки пакета.
У проекта Node есть некоторое желание, но нет конкретных планов (из-за накладных расходов на создание, тестирование и поддержку) предлагать двоичные файлы, совместимые с Alpine.
В качестве потенциальной альтернативы @mhart (участник Node) предлагает несколько образов Docker для Alpine Linux с предварительно установленными Node и, при необходимости, npm.
Чтобы удалить nvm
вручную, выполните следующее:
Сначала используйте nvm unload
, чтобы удалить команду nvm из сеанса терминала и удалить каталог установки:
$ nvm_dir="${NVM_DIR:-~/.nvm}"$ nvm выгрузить $ rm -rf "$nvm_dir"
Отредактируйте ~/.bashrc
(или другую конфигурацию ресурса оболочки) и удалите строки ниже:
экспорт NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # Это загружает nvm[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion
Чтобы упростить разработку и тестирование, у нас есть DockerFile для использования разработки, который основан на базовом изображении Ubuntu 18.04, подготовленном с важными и полезными инструментами для разработки nvm
, для создания изображения Docker окружающей среды, запустите команду Docker AT корень репозитория nvm
:
$ docker build -t nvm -dev.
Это будет упаковать ваш текущий репозиторий NVM с нашей предварительно определенной средой разработки в изображение Docker с именем nvm-dev
, как только он с успехом будет создан, подтвердите ваше изображение с помощью docker images
:
$ Docker Images Идентификатор изображения тега репозитория создал размер NVM-DEV Последний 9CA4C57A97D8 7 дней назад 650 МБ
Если у вас нет сообщения об ошибке, теперь вы можете легко задействовать в:
$ docker run -h nvm -dev -it nvm -dev nvm@nvm-dev: ~/.nvm $
Обратите внимание, что для построения изображения потребуется около 8 минут, а размер изображения будет около 650 МБ, поэтому оно не подходит для использования производства.
Для получения дополнительной информации и документации о Docker, пожалуйста, обратитесь к его официальному веб -сайту:
https://www.docker.com/
https://docs.docker.com/
Если вы попытаетесь установить версию узла, а установка сбой, обязательно запустите nvm cache clear
чтобы удалить загрузки кэшированного узла, или вы можете получить ошибку, подобную следующему:
Curl: (33) HTTP Server, похоже, не поддерживает байтовые диапазоны. Не может возобновить.
Где мой sudo node
? Проверьте #43
После выпуска V0.8.6 NODE NVM пытается установить из двоичных пакетов. Но в некоторых системах официальные бинарные пакеты не работают из -за несовместимости общих LIBS. В таких случаях вариант использования -s
для установки из источника:
nvm install -s 0,8,6
Если настройка псевдоним default
не устанавливает версию узла в новых оболочках (т.е. system
nvm current
), убедитесь, что PATH
узла системы устанавливается перед исходной линией nvm.sh
в вашем профиле оболочки (см. #658)
Версия узла NVM не найдена в Vim Shell
Если вы установите версию Node в версию, отличную от версии вашей системы Node nvm use 6.2.1
и откройте vim и запустить :!node -v
вы должны увидеть v6.2.1
если вы видите версию вашей системы v0.12.7
. Вам нужно запустить:
sudo chmod ugo-x/usr/libexec/path_helper
Подробнее об этом вопросе в DotPhiles/Dotzsh.
NVM не совместим с опцией конфигурации NPM "Prefix"
Некоторые решения для этой проблемы можно найти здесь
Существует еще один случай края, вызывающий эту проблему, и это несоответствие между $HOME
и фактическим именем домашнего каталога пользователя .
Вы должны убедиться, что имя каталога пользователя в $HOME
и имя каталога пользователя, которое вы увидели бы от запуска ls /Users/
с капитализированы одинаково (см. Эта проблема).
Чтобы изменить каталог пользователя и/или имя учетной записи, следуйте инструкциям здесь
Homebrew делает ZSH -каталоги небезопасными
ZSH Compinit: небезопасные каталоги, запустите Compudit для списка. Игнорировать небезопасные каталоги и продолжить [y] или прервать композицию [n]? й
Homebrew вызывает небезопасные каталоги, такие как /usr/local/share/zsh/site-functions
и /usr/local/share/zsh
. Это не проблема nvm
- это проблема домашнего пиво. Обратитесь сюда для некоторых решений, связанных с проблемой.
Mac с яблочными чипсами
Экспериментальная поддержка архитектуры Apple Silicon Chip была добавлена в node.js v15.3, а полная поддержка была добавлена в V16.0. Из-за этого, если вы попытаетесь установить более старые версии узла, как обычно, вы, вероятно, испытаете либо ошибки компиляции при установке узел или ошибок вне памяти при запуске вашего кода.
Таким образом, если вы хотите запустить версию до V16.0 на Apple Silicon Mac, лучше всего скомпилировать узлы, нацеленную на архитектуру Intel x86_64
, чтобы Rosetta 2 могла перевести инструкции процессора x86_64
в инструкции на основе Apple Silicon. Вот что вам нужно сделать:
Установите Rosetta, если вы еще этого не сделали
$ SoftwareUpdate-Install-Rosetta
Вы можете задаться вопросом: «Как мой Apple Silicon Mac узнает, чтобы использовать Rosetta для версии узла, скомпилированной для чипа Intel?». Если исполняемый файл содержит только инструкции Intel, MacOS автоматически использует Rosetta для перевода инструкций.
Откройте оболочку, которая работает с использованием розетты
$ arch -x86_64 zsh
Примечание. То же самое можно сказать и о том, чтобы найти приложение терминала или iTerm в Finder, щелкнуть правой кнопкой мыши, выбрав «Получить информацию», а затем проверить поле «Открыть с помощью розетты».
Примечание. Этот сеанс терминала теперь работает в zsh
. Если zsh
не является той оболочкой, которую вы обычно используете, nvm
может не быть source
автоматически, как это, вероятно, для вашей обычной оболочки через ваши dotfiles. Если это так, не забудьте получить nvm
.
$ source "$ {nvm_dir} /nvm.sh"
Установите любую старую версию узла, в которой вы заинтересованы. Давайте использовать 12.22.1 в качестве примера. Это принесет исходный код узла и скомпилируется, который займет несколько минут.
$ nvm install v12.22.1-shared-zlib
Примечание: вам, вероятно, любопытно, почему --shared-zlib
включен. В недавних версиях системного clang
Apple есть ошибка. Если в вашей системе установлена одна из этих сломанных версий, приведенный выше шаг, скорее всего, все равно преуспеет, даже если вы не включили флаг --shared-zlib
. Однако позже, когда вы попытаетесь npm install
что -то, используя старую версию node.js, вы увидите incorrect data check
. Если вы хотите избежать возможных хлопот, связанных с этим, включите этот флаг. Для получения более подробной информации см. Этот вопрос и этот комментарий
Выйдите обратно к своей родной раковине.
$ exit $ arch ARM64
ПРИМЕЧАНИЕ. Если вы выбрали коробку с надписью «Открыть с помощью розетты», а не запустить команду CLI на втором этапе, вы увидите i386
здесь. Если у вас нет другой причины, чтобы выбрать эту коробку, вы можете отменить ее сейчас.
Проверьте, чтобы убедиться, что архитектура верна. x64
- это аббревиатура для x86_64
, что вы хотите увидеть.
$ node -p process.arch х64
Теперь вы должны иметь возможность использовать узел, как обычно.
Если вы столкнулись с этой ошибкой на WSL-2:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | бить % Общее количество % получили % xferd среднее время времени времени времени D Загрузить загрузку общая оттраченная левая скорость 0 0 0 0 0 0 0 0 0-:-:-0:00:09-:-:-0curl: (6) Не удалось разрешить хост: rav.githubusercontent.com
Это может быть связано с вашим антивирусом, VPN или другими причинами.
Где вы можете ping 8.8.8.8
, пока не можете ping google.com
Это может быть просто решено путем запуска в вашем корневом каталоге:
sudo rm /etc/resolv.conf sudo bash -c 'echo "именервер 8.8.8.8"> /etc/resolv.conf'suudo bash -c' echo "[network]"> /etc/wsl.conf'sudo bash -c 'echo "generateresolvconf = false" >> /etc/wsl.conf'sudo catttr +itc/resolv.conf
Это удаляет ваш файл resolv.conf
, который автоматически генерируется при запуске WSL, создает новый файл и помещает nameserver 8.8.8.8
, а затем создает файл wsl.conf
и добавляет [network]
и generateResolveConf = false
, чтобы предотвратить автоматическую генерацию этого файл.
Вы можете проверить содержимое файла, запустив:
Cat /etc/resolv.conf
В настоящее время единственным сопровождающим является @ljharb - все больше сопровождающих приглашаются, и мы надеемся добавить людей в команду с течением времени. Управление будет переоценено по мере развития проекта.
Поддерживается только последняя версия (v0.40.1).
Если вы не можете обновиться до последней версии nvm
, наши партнеры предоставляют коммерческие исправления безопасности для всех неподдерживаемых версий:
Бесконечная поддержка геродева
Смотрите лицензию.md.
Copyright Foundation и участники nvm
. Все права защищены. Фонд OpenJS зарегистрировал товарные знаки и использует товарные знаки. Список товарных знаков Фонда OpenJS, пожалуйста, смотрите нашу товарную политику и список товарных знаков. Node.js является товарным знаком Joyent, Inc. и используется с его разрешения. Товарные знаки и логотипы, не указанные в списке товарных знаков Foundation OpenJS, являются товарными знаками TradeMarks ™ или зарегистрированными товарными знаками их соответствующих владельцев. Использование их не подразумевает какую -либо принадлежность или одобрение.
Фонд OpenJS | Условия использования | Политика конфиденциальности | OpenJS Foundation Устав | Политика торговой марки | Список торговой марки | Политика использования файлов cookie