Làm cách nào để thay đổi phiên bản của npm bằng nvm?


238

Tôi đã sử dụng NVM để cài đặt các phiên bản mới nhất của nodeJS cho công việc nút của tôi. Nó hoạt động hoàn toàn tốt để cài đặt các phiên bản riêng biệt và chuyển đổi giữa chúng. Nó cũng cài đặt phiên bản NPM mới nhất trong mỗi thư mục ... / bin cục bộ cùng với tệp nhị phân nút. Tuy nhiên, dường như không có cách nào để chuyển đổi phiên bản NPM mà tôi đang sử dụng (hoặc ít nhất là tôi không thể tìm ra nó).

Giải pháp duy nhất tôi có thể nghĩ cho bản thân mình là xóa nhị phân mà nó mặc định (đó là NPM đã được cài đặt khi tôi cài đặt nút đầu tiên với NVM) và đặt vị trí nhị phân NPM mới nhất. Tuy nhiên, tôi tự hỏi liệu có cách nào tốt hơn để làm điều này không.


1
Tại sao bạn muốn thay đổi phiên bản NPM, không giống như bạn sẽ cài đặt bất kỳ gói nào chỉ hoạt động với phiên bản NPM cũ. Và sau nút 0.6, nút đi kèm với NPM mới nhất. Vì vậy, thay đổi phiên bản nút cũng sẽ thay đổi phiên bản npm.
Farid Nouri Neshat

1
ngoại trừ nó không thông qua NVM. có - nút đi kèm với NPM, nhưng điều đó chỉ có nghĩa là nó cài đặt nhị phân cùng với nó. Tôi có thể thấy cả hai tệp nhị phân trong các thư mục tương ứng của chúng, nhưng khi tôi chạy "nvm sử dụng v0.6.13", tệp nhị phân npm được sử dụng vẫn là tệp được cài đặt với phiên bản nút cũ hơn, thay vì cài đặt với phiên bản mới nhất.
thisissami

1
Đây là mã cho npm: github.com/creationix/nvm/blob/master/nvm.sh#L135-148 , không cần thiết kể từ 0,6, vì vậy có lẽ bạn nên thử xóa phần đó. Điều đó sẽ giúp. Bạn cũng có thể tạo một vấn đề trên github.
Farid Nouri Neshat

Tôi đang xử lý vấn đề này ngay bây giờ, bất kỳ trợ giúp nào cũng được đánh giá cao - stackoverflow.com/questions/50976138/ mẹo
Alexander Mills

Câu trả lời:


329

EDIT: vài năm kể từ khi câu hỏi này được trả lời lần đầu tiên, như đã lưu ý trong một câu trả lời mới hơn , giờ đây đã có một lệnh cho điều này:

nvm hiện có lệnh cập nhật npm. Đó là nvm install-latest-npmhoặc nvm install --latest-npm.

nvm install-latest-npm: Cố gắng nâng cấp lên phiên bản mới nhất làm việc npmtrên phiên bản nút hiện tại

nvm install --latest-npm: Sau khi cài đặt, hãy thử nâng cấp lên npm làm việc mới nhất trên phiên bản nút đã cho

Dưới đây là những sửa đổi trước đây của câu trả lời chính xác cho câu hỏi này.

Hơn ba năm sau khi câu hỏi này lần đầu tiên được hỏi, có vẻ như câu trả lời bây giờ đơn giản hơn nhiều. Chỉ cần cập nhật phiên bản mà nvm đã cài đặt ~/.nvm/versions/node/[your-version]/lib/node_modules/npm.

Tôi vừa cài đặt nút 4.2.2, đi kèm với npm 2.14.7, nhưng tôi muốn sử dụng npm 3. Vì vậy, tôi đã làm:

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

Dễ dàng!

Và vâng, điều này sẽ hoạt động cho bất kỳ mô-đun nào, không chỉ npm, mà bạn muốn là "toàn cầu" cho một phiên bản cụ thể của nút.


EDIT 1: Trong phiên bản mới nhất, npm -gthông minh và cài đặt các mô-đun vào đường dẫn ở trên thay vì đường dẫn toàn cầu của hệ thống.


Cảm ơn @philraj đã chỉ ra điều này trong một bình luận.


13
và cho những người không biết nvm của họ ở đâu, như tôi, chạy a which npm.
Larry

16
Và nếu bạn muốn có một phiên bản của NPM khác hơn là mới nhất, chạy npm install npm@major.minor.patchđể có được phiên bản cụ thể, ví dụnpm@3.10.9
Michael

2
Một cái gì đó tương tự cũng hoạt động cho nvm-windows , ví dụ cd ~/AppData/Roaming/nvm/v5.10.1.
vắng mặt

2
Đối với bất kỳ ai sử dụng nvm cho Windows, điều tương tự có thể được thực hiện như trên (chạy npm install npm), nhưng trong các vị trí cài đặt nút cho Windows. Trong Windows 10, đây là ~ / AppData / Chuyển vùng / nvm / [phiên bản của bạn]. tức là người dùng \ myusername \ AppData \ Roaming \ nvm \ v9.7.1
Sean Holmesby

3
Thậm chí dễ dàng hơn: nvm install-latest-npmnhư được trả lời dưới đây bởi samlandfried - stackoverflow.com/a/47519162/5991278
philraj

43

nvm không xử lý npm.

Vì vậy, nếu bạn muốn cài đặt nút 0.4.x (mà nhiều gói vẫn phụ thuộc vào) và sử dụng NPM, bạn vẫn có thể sử dụng npm 1.0.x.

Cài đặt nút 0.6.x (đi kèm với npm 1.1.x) và cài đặt nvm với npm:

npm install nvm
. ~/nvm/nvm.sh

Cài đặt nút 0.4.x với nvm:

nvm install v0.4.12
nvm use v0.4.12

Cài đặt npm bằng install.sh (lưu ý -Lparam để theo bất kỳ chuyển hướng nào):

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

Điều này sẽ phát hiện nút 0.4.12 và cài đặt npm 1.0.106 trong thư mục ~ / nvm / v0.4.12 / lib / node_modules của bạn và tạo liên kết tượng trưng cho nvm

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

Nếu bạn cố chạy npm, nó vẫn sẽ báo lỗi nhưng nếu bạn làm nvm use v0.4.12lại, thì nó sẽ hoạt động.


3
Cảm ơn! Một lưu ý rằng url đã thay đổi thành: curl https://npmjs.org/install.sh | sh
tristen

7
Đây có phải là một câu trả lời thực sự cũ bây giờ? Npm của tôi được nvm tải xuống tự động như một phần phụ thuộc của phiên bản nút tôi đang sử dụng.
Damon Smith

2
Vâng. No cu. Nếu bạn vẫn đang sử dụng nút 0.4 và một nvm cũ, bạn có thể thấy vấn đề này.
fijiaaron

1
URL đã được thay đổi một lần nữa để buộc www. Sử dụng curl -Lđể làm theo chuyển hướng.
Neal Ehardt

32

nvm hiện có lệnh cập nhật npm. Đó là nvm install-latest-npmhoặc npm install --latest-npm.


3
Bạn có một liên kết đến các tài liệu cho việc này?
allicarn

1
Từ nvm helpđầu ra của bàn điều khiển: Mặc dù vậy, --latest-npm After installing, attempt to upgrade to the latest working npm on the given node versiontôi không tìm thấy một tài liệu tham khảo nào trong nvmtài liệu này. Hãy chia sẻ nếu bạn tìm thấy nó.
samlandfried

Cảm ơn bạn! Điều này thực sự nên được đánh dấu là câu trả lời chính xác.
philraj

nó chỉ có sẵn trên 32 bit
Negin Basiri

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

2
Mặc dù câu hỏi là về nvm, tôi thực sự đã đến đây vì điều đó, cảm ơn. Nâng cao.
Atrahocation

26

Tôi đang ở trên Windows và tôi không thể làm cho bất kỳ thứ gì trong số này hoạt động. Tôi liên tục nhận được lỗi về các tập tin đang cản trở. Điều này làm việc mặc dù:

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

Và bùng nổ, tôi trở lại trong kinh doanh.


3
Cảm ơn, điều này cũng làm việc cho tôi, trên Windows. (có cùng vấn đề về xung đột tệp)
Venryx

1
Làm việc cho tôi thx. Đang sử dụng nvm trên Windows để quản lý nút và muốn nâng cấp nvm sau khi chuyển sang phiên bản nút. Phải chạy giao diện điều khiển với quyền cao. Thư mục nodejs đường dẫn của tôi là "C: \ Program Files \ nodejs" là bí danh cho một vị trí khác trên máy của tôi, nvm sử dụng để tải xuống bộ đệm (không phải APPDATA), đoán tôi đã chọn một vị trí khác khi cài đặt nvm.
Moika quay

2
Cảm ơn bạn, có lẽ họ cần sửa cách cập nhật npm trên mọi phiên bản nodejs cũ trên các cửa sổ nvm.
rbinsztock

1
Điều đó giúp tôi cập nhật npm đi kèm với Node 10.x. Cảm ơn bạn!
andypotato

2
Làm việc trên cửa sổ với v10.15.3 nodejs, đã phải thay đổi mvđể renrmđể delrmdircho tôi.
Deerchao

17

Thay đổi phiên bản npm trên hệ điều hành dựa trên linux chưa phải là một quá trình lệnh đơn giản. Tôi đã thực hiện theo sau để chuyển về phiên bản cũ hơn của npm. Điều này sẽ làm việc để có được bất kỳ phiên bản npm làm việc. Đầu tiên cài đặt phiên bản npm bạn muốn sử dụng:

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

Xóa liên kết sym trong / usr / local / bin /

sudo rm /usr/local/bin/npm

Tạo lại liên kết sym bằng phiên bản npm mong muốn mà bạn đã cài đặt

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

1
đã làm theo các hướng dẫn này khi cố gắng đi từ 2.14.7 đến 2.15.9 và bây giờ khi tôi nhập npm -v, tôi nhận được 3.8.6. Chết tiệt.
Kyle Baker

3
Sau khi thử một vài thứ, đối với tôi, chỉ cần sử dụng sudo npm install -g npm@x.x.xsẽ giúp tôi phiên bản đó phản hồi lại npm -v. Điều này ít nhất đã làm việc đi từ 4.x đến 2.15.9, dù sao đi nữa.
Kyle Baker

1
Trong trường hợp của tôi sudo npm install -g npm@4.6.1chỉ cài đặt 4.6.1 nhưng npm 5.1.0 vẫn được sử dụng. Mẹo của bạn giúp tôi chuyển sang 4.6.1.
Hùng Trần

8

Bằng cách xem www.npmjs.com/install.sh tôi thấy có một cách để cài đặt một phiên bản cụ thể bằng cách đặt biến môi trường

export npm_install="2.14.14"

Sau đó chạy tập lệnh tải xuống như được mô tả tại npmjs.com :

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

Nếu bạn bỏ qua cài đặt biến npm_install , thì nó sẽ cài đặt phiên bản mà họ đã đánh dấu là mới nhất


2
Tôi đã phải sử dụng curl -L https://www.npmjs.com/install.sh | sudo sh, aaaa và phương pháp này không hoạt động, mang lại cho tôi phiên bản mới nhất mặc dù tôi đã xuất biến môi trường nói. Chúa chết tiệt. Tôi muốn phiên bản 2.15.9 từ 2.14.7, câu trả lời bên dưới đưa tôi lên 3.8.6, và bây giờ câu trả lời này đặt tôi ở 4.0.2. WTF.
Kyle Baker

6

Trong cửa sổ, chạy thiết bị đầu cuối của bạn với tư cách quản trị viên (trong trường hợp có vấn đề về quyền như tôi đã có). Sau đó sử dụng một phiên bản nút cụ thể (giả sử 7.8.0) bằng cách

nvm use 7.8.0

sau đó cập nhật npm của bạn lên phiên bản cụ thể mong muốn bằng cách

npm install -g npm@5.0.3

2

Thế còn npm i -g npm? Bạn đã cố gắng để chạy này là tốt?


Đây luôn là cách nhanh nhất và dễ nhất tôi thường sử dụng.
CTS_AE

2

Biến thể nhẹ trên các hướng dẫn trên, làm việc cho tôi. (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

Tôi đã có vấn đề tương tự sau khi cài đặt nvm-windowstrên đầu cài đặt Node hiện có. Giải pháp chỉ là làm theo hướng dẫn:

Bạn cũng nên xóa vị trí cài đặt npm hiện tại (ví dụ: "C: \ Users \ AppData \ Roaming \ npm") để vị trí cài đặt nvm sẽ được sử dụng chính xác thay thế.

Cài đặt & Nâng cấp


0

Cài đặt & sử dụng NVM trên Windows

Dưới đây là các bước để cài đặt NVM trên Windows:

NVM là viết tắt của trình quản lý phiên bản nút, sẽ giúp chuyển đổi các phiên bản nút của bạn để sử dụng cụ thể. Nó cũng cho phép người dùng làm việc với nhiều phiên bản npm và nút.

Cài đặt cài đặt nvm. Sử dụng lệnh "danh sách nvm" để kiểm tra danh sách phiên bản nút được cài đặt. Nhập "nvm sử dụng số phiên bản [6.9.3]" để chuyển đổi phiên bản. Để biết thêm thông tin

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.