Как я могу изменить версию npm с помощью nvm?


241

Я использовал NVM для установки последних версий nodeJS для работы моего узла. Он прекрасно работает для установки отдельных версий и переключения между ними. Он также устанавливает последнюю версию NPM в каждой локальной папке ... / bin вместе с двоичным файлом узла. Тем не менее, кажется, нет никакого способа переключить версию NPM, которую я использую (или, по крайней мере, я не могу понять это).

Единственное решение, которое я могу придумать для себя, - это удалить двоичный файл, в котором он установлен по умолчанию (то есть NPM, который был установлен, когда я впервые установил узел с NVM), и вместо него установить последний двоичный файл NPM. Тем не менее, мне интересно, есть ли лучшие способы сделать это.


1
Почему вы хотите изменить версию NPM, это не значит, что вы собираетесь устанавливать какой-либо пакет, который работает только со старой версией NPM. И после узла 0.6 узел приходит с последним NPM. Таким образом, изменение версии узла также изменит версию npm.
Фарид Нури Нешат

1
кроме как через NVM. да - узел поставляется с NPM, но это просто означает, что он устанавливает двоичный файл вместе с ним. я вижу оба двоичных файла в соответствующих папках, но когда я запускаю «nvm use v0.6.13», используемый двоичный файл npm остается тем, который был установлен с более старой версией узла, вместо того, который был установлен с самой новой версией.
thisissami

1
Вот код для npm: github.com/creationix/nvm/blob/master/nvm.sh#L135-148 , который не нужен с версии 0.6, так что, возможно, вам следует попытаться удалить эту часть. Это должно помочь. Вы также можете создать проблему на GitHub.
Фарид Нури Нешат

Я работаю над этой проблемой прямо сейчас, любая помощь приветствуется - stackoverflow.com/questions/50976138/…
Александр Миллс

Ответы:


330

РЕДАКТИРОВАТЬ: через несколько лет после первого ответа на этот вопрос, как отмечено в более новом ответе , теперь есть команда для этого:

Теперь у nvm есть команда для обновления npm. Это nvm install-latest-npmили nvm install --latest-npm.

nvm install-latest-npm: Попытка обновления до последней npmверсии, работающей на текущей версии узла

nvm install --latest-npm: После установки попытайтесь обновить до последней рабочей npm на данной версии узла

Ниже приведены предыдущие версии правильного ответа на этот вопрос.

Спустя три года после того, как этот вопрос был впервые задан, кажется, что ответ теперь намного проще. Просто обновите версию, в которой установлена ​​nvm и которая находится в ~/.nvm/versions/node/[your-version]/lib/node_modules/npm.

Я только что установил узел 4.2.2, который поставляется с npm 2.14.7, но я хочу использовать npm 3. Итак, я сделал:

cd ~/.nvm/versions/node/v4.2.2/lib
npm install npm

Легко!

И да, это должно работать для любого модуля, а не только для npm, который вы хотите быть «глобальным» для конкретной версии узла.


РЕДАКТИРОВАТЬ 1: В новейшей версии, npm -gумный и устанавливает модули в путь выше, а не глобальный путь системы.


Спасибо @philraj за то, что указал на это в комментарии.


13
и для тех, кто не знает, где их nvm, как я, запустить which npm.
Ларри

16
И если вы хотите версию npm, отличную от последней, запустите, npm install npm@major.minor.patchчтобы получить эту конкретную версию, например,npm@3.10.9
Michael

2
Нечто подобное работает и для nvm-windows , например cd ~/AppData/Roaming/nvm/v5.10.1.
Абсент

2
Для любого, кто использует nvm для Windows, можно сделать то же самое, что и выше (запустить npm install npm), но в местах установки узла для Windows. В Windows 10 это ~ / AppData / Roaming / nvm / [ваша-версия]. т.е. пользователи \ myusername \ AppData \ Roaming \ nvm \ v9.7.1
Шон Холмсби,

3
Еще проще: nvm install-latest-npmкак ответил ниже samlandfried - stackoverflow.com/a/47519162/5991278
philraj

43

nvm не обрабатывает npm.

Поэтому, если вы хотите установить узел 0.4.x (от которого все еще зависят многие пакеты) и использовать NPM, вы все равно можете использовать npm 1.0.x.

Установите узел 0.6.x (который поставляется с npm 1.1.x) и установите nvm с npm:

npm install nvm
. ~/nvm/nvm.sh

Установите узел 0.4.x с помощью nvm:

nvm install v0.4.12
nvm use v0.4.12

Установите npm, используя install.sh (обратите внимание на -Lпараметр, чтобы следовать любым перенаправлениям):

curl -L https://npmjs.org/install.sh | sh

Это обнаружит узел 0.4.12 и установит npm 1.0.106 в вашу папку ~ / nvm / v0.4.12 / lib / node_modules и создаст символическую ссылку для nvm

~/nvm/v0.4.12/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js

Если вы попытаетесь запустить npm, он все равно выдаст ошибку, но если вы сделаете это nvm use v0.4.12снова, теперь он должен работать.


3
Спасибо! Обратите внимание, что URL-адрес изменился на: curl https://npmjs.org/install.sh | sh
tristen

7
Это действительно старый ответ сейчас? Мой npm загружается nvm автоматически в зависимости от версии узла, которую я использую.
Дэймон Смит

2
Да. Это старый. Если вы все еще используете узел 0.4 и старый nvm, вы можете увидеть эту проблему.
Fijiaaron

1
URL был снова изменен, чтобы заставить www. Используйте, curl -Lчтобы следовать перенаправлению.
Нил Эхардт

32

Теперь у nvm есть команда для обновления npm. Это nvm install-latest-npmили npm install --latest-npm.


3
У вас есть ссылка на документацию для этого?
allicarn

1
Из nvm helpвывода консоли: --latest-npm After installing, attempt to upgrade to the latest working npm on the given node versionя не нашел ссылку на это в nvmдокументации, хотя. Пожалуйста, поделитесь, если вы найдете это.
Самландфрид

Спасибо! Это действительно следует пометить как правильный ответ.
Philraj

он доступен только на 32 битах
Negin Basiri

30
npm install npm@x.x.x -g
npm install npm@5.4.0 -g

2
Хотя вопрос о nvm, я на самом деле пришел сюда за это, спасибо. Upvoting.
Atrahasis

27

Я на Windows, и я не мог заставить все это работать. Я продолжал получать ошибки о файлах в пути. Это сработало, хотя:

cd %APPDATA%\nvm\v8.10.0           # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js i -g npm@latest

cd %APPDATA%\nvm\v8.10.0 # or whatever version you're using
rm npm-old
rm npm-old.cmd
cd node_modules\
rm -rf npm-old

И бум, я снова в деле.


3
Спасибо, это сработало и у меня на Windows. (была
такая

1
Работал для меня, спасибо. Я использую nvm в Windows для управления узлом и хотел поднять nvm после перехода на версию узла. Пришлось запустить консоль с повышенными разрешениями. Моя папка nodejs пути - «C: \ Program Files \ nodejs», которая является псевдонимом для другого местоположения на моей машине, которое nvm использует для кэширования загрузок (не APPDATA), думаю, я выбрал другое местоположение при установке nvm.
Мойке

2
Спасибо, им, вероятно, нужно исправить способ обновления npm на каждой старой версии nodejs в окнах nvm.
rbinsztock

1
Это помогло мне обновить npm, поставляемый с Node 10.x. Спасибо!
andypotato

2
Работал на windows с nodejs v10.15.3, пришлось сменить mvна renи rmна delи rmdirдля меня.
deerchao

17

Изменение версий npm в ОС на основе Linux пока не является простым командным процессом. Я сделал следующее, чтобы вернуться к старой версии npm. Это должно работать, чтобы заставить работать любую версию npm. Сначала установите версию npm, которую вы хотите использовать:

sudo npm install -g npm@X.X.X

Удалите ссылку sym в / usr / local / bin /

sudo rm /usr/local/bin/npm

Создайте ссылку sym заново, используя установленную вами версию npm.

sudo ln -s /usr/bin/npm@X.X.X /usr/local/bin/npm

1
следуя этим инструкциям, пытаясь перейти с 2.14.7 на 2.15.9, и теперь, когда я набираю npm -v, я получаю 3.8.6. Проклятье.
Кайл Бейкер

3
После того, как я попробовал несколько вещей, только использование sudo npm install -g npm@x.x.xзаставляет меня ответить на эту версию npm -v. По крайней мере, это сработало с 4.x до 2.15.9.
Кайл Бейкер

1
В моем случае был sudo npm install -g npm@4.6.1установлен только 4.6.1, но npm 5.1.0 все еще использовался. Ваш совет поможет мне перейти на 4.6.1.
Хунг Чан

8

Глядя на www.npmjs.com/install.sh, я обнаружил, что есть способ установить определенную версию, установив переменную среды

export npm_install="2.14.14"

Затем запустите скрипт загрузки, как описано на npmjs.com :

curl -L https://www.npmjs.com/install.sh | sh

Если вы пропустите настройку переменной npm_install , она установит версию, помеченную как последняя


2
Мне пришлось использовать curl -L https://www.npmjs.com/install.sh | sudo sh, аааа, и этот метод не работал, получая последнюю версию, хотя я и экспортировал указанную переменную среды. Черт побери. Я хотел версию 2.15.9 от 2.14.7, ответ ниже поставил меня на 3.8.6, и теперь этот ответ ставит меня на 4.0.2. WTF.
Кайл Бейкер

6

В windows запустите свой терминал от имени администратора (в случае, если у меня возникли проблемы с правами доступа). Затем используйте конкретную версию узла (скажем, 7.8.0)

nvm use 7.8.0

затем обновите свой npm до нужной конкретной версии с помощью

npm install -g npm@5.0.3


2

Небольшой разброс по вышеприведенным инструкциям, сработал для меня. (MacOS Sierra 10.12.6)

npm install -g npm@3.10.10
rm /usr/local/bin/npm
ln -s ~/.npm-packages/bin/npm /usr/local/bin/npm
npm --version


0

У меня была такая же проблема после установки nvm-windowsповерх существующей установки Node. Решение было просто следовать инструкциям:

Вам также следует удалить существующее место установки npm (например, «C: \ Users \ AppData \ Roaming \ npm»), чтобы вместо него правильно использовалось место установки nvm.

Установка и обновление


0

Установка и использование NVM в Windows

Ниже приведены шаги для установки NVM в Windows:

NVM означает менеджер версий узлов, который поможет переключать версии вашего узла для конкретного использования. Это также позволяет пользователю работать с несколькими версиями npm и узлов.

Установите установку NVM. Используйте команду "nvm list", чтобы проверить список версий установленного узла. Введите «nvm use number version [6.9.3]» для переключения версий. Для получения дополнительной информации

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.