2012-03-18 3 views
112

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

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

+1

Почему вы хотите изменить версию НОГО, это не так, как ты собираешься установите любой пакет, который работает только со старой версией NPM. А после узла 0.6 узел поставляется с последним NPM. Таким образом, изменение версии узла также изменит версию npm. –

+1

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

+1

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

ответ

188

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

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

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

Easy!

И да, это должно работать для любого модуля, а не только для npm, который вы хотите быть «глобальным» для определенной версии узла. (EDIT: В новейшей версии npm -g является интеллектуальным и устанавливает модули в путь выше, а не глобальный путь системы.)

+2

Спасибо! работал для меня –

+2

очень приятно, thx! – Juri

+10

и для тех, кто не знает, где их nvm, как и я, запускайте 'which npm'. – Larry

33

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

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

Установите узел 0.6.x (который поставляется с НПМ 1.1.x) и установить NVM с НПМ:

npm install nvm 
. ~/nvm/nvm.sh 

Установка узла 0.4.x с NVM:

nvm install v0.4.12 
nvm use v0.4.12 

Установка НПМ с помощью установки .sh (обратите внимание на -L параметров, чтобы следить за редирект):

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

Это обнаружит узел 0.4.12 и Insta Л.Л. НПМ 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 

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

+3

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

+7

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

+2

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

14

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

sudo npm install -g [email protected] 

Удалить ссылку сим в/USR/местные/бен/

sudo rm /usr/local/bin/npm 

воссоздают ссылку сим, используя нужную версию НПМ вы установили

sudo ln -s /usr/bin/[email protected] /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', aaaaand этот метод не работал, получив последнюю версию, хотя я экспортировал указанную переменную среды. Черт побери. Мне нужна версия 2.15.9 от 2.14.7, ниже ответьте на 3.8.6, и теперь этот ответ ставит меня в 4.0.2. WTF. –

0

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

2

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

+0

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

+0

Из вывода консоли 'nvm help: ' --latest-npm После установки попытайтесь выполнить обновление до последней рабочей версии npm для данной версии узла. Я не нашел ссылку на это в документах 'nvm', хотя , Пожалуйста, поделитесь, если вы его найдете. – samlandfried

1

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

npm install -g [email protected] 
rm /usr/local/bin/npm 
ln -s ~/.npm-packages/bin/npm /usr/local/bin/npm 
npm --version 
1

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

nvm use 7.8.0 

затем обновить НПЙ нужную конкретную версию,

npm install -g [email protected] 
Смежные вопросы