Как я могу изменить версию npm с помощью nvm? - PullRequest
200 голосов
/ 18 марта 2012

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

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

Ответы [ 12 ]

285 голосов
/ 06 ноября 2015

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

У 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 за указание на это в комментарии.

41 голосов
/ 10 апреля 2012

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, теперь она должна работать.

27 голосов
/ 27 ноября 2017

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

21 голосов
/ 05 сентября 2017
npm install npm@x.x.x -g
npm install npm@5.4.0 -g
17 голосов
/ 13 ноября 2015

Изменение версий 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
14 голосов
/ 20 июня 2018

Я на 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

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

8 голосов
/ 07 декабря 2015

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

export npm_install="2.14.14"

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

curl -L <a href="https://www.npmjs.com/install.sh">https://www.npmjs.com/install.sh</a> | sh

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

5 голосов
/ 12 января 2018

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

nvm use 7.8.0

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

npm install -g npm@5.0.3
2 голосов
/ 28 декабря 2017

Небольшое отклонение от приведенных выше инструкций, сработало для меня. (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
2 голосов
/ 30 октября 2017

А как насчет npm i -g npm?Вы тоже пытались запустить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...