Як я можу змінити версію npm за допомогою nvm?


240

Я використовую 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

EDIT: кілька років з моменту вперше відповіді на це запитання, як зазначалося в новій відповіді , тепер для цього є команда:

Тепер 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, який ви хочете бути "глобальним" для конкретної версії вузла.


EDIT 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 \ Роумінг \ 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документах. Будь ласка, поділіться, якщо ви знайдете.
samlandfried

Дякую! Це дійсно слід позначити як правильну відповідь.
philraj

доступний лише для 32 біт
Негін Базірі

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

2
Хоча питання стосується nvm, я насправді за це прийшов сюди, дякую. Оголошення.
Атрагасис

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. (був такий самий випуск файлових конфліктів)
Venryx

1
Працював для мене THX. Я використовую nvm в Windows для управління вузлом і хотів підняти nvm після переходу на версію вузла. Довелося запускати консоль із підвищеними дозволами. Моя папка nodejs шляху - це "C: \ Program Files \ nodejs", яка є псевдонімом для іншого місця на моїй машині, який nvm використовує для кешування завантажень (а не APPDATA), мабуть, я вибрав інше місце під час встановлення nvm.
Мойка

2
Дякую, їм, ймовірно, потрібно виправити спосіб оновлення npm для кожної старої версії nodejs у nvm windows.
rbinsztock

1
Це допомогло мені оновити npm, який постачався разом із Node 10.x. Дякую!
andypotato

2
Працював над вікнами з 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, aaaaand цей метод не працював, отримуючи мені останню версію, хоча я експортував зазначену змінну середовища. Чорт забирай. Я хотів версії 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 використовувати номер версії [6.9.3]" для перемикання версій. Для отримання додаткової інформації

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.