當前位置: 首頁>>技術教程>>正文


你如何更新npm到最新版本?

, ,

問題描述

我在設置Vagrant框中遇到npm問題。我注意到npm版本有點舊,所以我想用最新版本來檢查問題。

我的理解是,您應該能夠使用npm install -g npm更新npm,但該命令對正在使用的npm沒有影響:

vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
npm http GET https://registry.npmjs.org/npm
npm http 200 https://registry.npmjs.org/npm
npm http GET https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
npm http 200 https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/local/lib/node_modules/npm
vagrant@box:~$ npm -v
1.3.10

我也嘗試使用n(如我如何更新我的nodeJS到最新版本?中的建議)進行更新,但它既不影響npm也不影響node

vagrant@box:~$ node -v
v0.10.25
vagrant@box:~$
vagrant@box:~$ sudo npm install -g n
/usr/bin/n -> /usr/lib/node_modules/n/bin/n
n@1.2.9 /usr/lib/node_modules/n
vagrant@box:~$ sudo n stable

     install : v0.10.33
       mkdir : /usr/local/n/versions/0.10.33
       fetch : http://nodejs.org/dist/v0.10.33/node-v0.10.33-linux-x64.tar.gz
   installed : v0.10.33

vagrant@box:~$ node -v
v0.10.25
vagrant@box:~$ npm -v
1.3.10

我需要做些什麽來將npm更新到最新版本?

最佳解決思路

我仍然不明白為什麽,但我必須運行npm install -g npm兩次才能獲得理想的效果:

vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
npm http GET https://registry.npmjs.org/npm
npm http 200 https://registry.npmjs.org/npm
npm http GET https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
npm http 200 https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/local/lib/node_modules/npm
vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/lib/node_modules/npm
vagrant@box:~$ npm -v
2.1.12

次佳解決思路

您可以使用npm本身,PPA或手動更新nodejs。

故宮:

檢查您的當前版本:

node -v

以下內容將清除緩存。

sudo npm cache clean -f

安裝n

sudo npm install -g n

你可以告訴它安裝一個特定的版本,如下所示:

sudo n 0.8.11

或者告訴它安裝最新的穩定版本。兩者可能需要一段時間。

sudo n stable

要查看它是否實際升級,請運行:

node -v

PPA:

其他選項是通過PPA by chris-lea進行安裝;

sudo add-apt-repository ppa:chris-lea/node.js  
sudo apt-get update  
sudo apt-get install nodejs

此PPA支持以下發行版:Utopic(14.10),Trusty(14.04),Saucy(13.10),Raring(13.04),Quantal(12.10),Precise(12.04),Oneiric(11.10),Natty(11.04),Lucid(10.04 )。

手動:

您可以隨時通過手動downloading更新最新版本並自行安裝!


參考:

第三種解決思路

當您第一次執行npm install -g npm時,shell(Bash)將在您的路徑中搜索npm,找到由係統軟件包安裝的/usr/bin/npm,然後使用它來安裝新版本的npm。新版本將安裝在/usr/local/bin/npm中。

現在,你的路徑應該有/usr/local/bin/ /usr/bin/之前,所以你會認為它現在將拿起/usr/local/bin/的更新版本,對吧?錯誤。

Bash會在第一次搜索CACHE可執行文件路徑後進行搜索,所以當您第二次說npm時,它仍然使用/usr/bin/npm首次發現的緩存版本。

要告訴Bash清除這個緩存並再次查看路徑,您必須執行hash -r

安裝npm並執行此操作後,我的shell就可以很好地獲取新版本的npm

謝謝

第四種思路

在一個命令中將NPM更新為最新版本

要升級或更新您的npm版本,隻需輸入終端:

sudo npm install npm@latest -g

正如NPM documentation的頁腳中提到的那樣

第五種思路

大多數情況下,我無法使用全局命令對其進行升級。然而,對我而言,是從所有係統node-modules的源碼升級軟件包:

找出npm的安裝位置並進入該文件夾

#Below command shows the destination (remove sed pipe to see the full path of npm-cli)
whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{19\}$//'

#Go in there and install it manually. In my case it was the folder below...
cd /usr/lib
sudo npm install npm@latest

看看每個人(尤其是懶惰的人)強大的one-liner

cd `whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{18\}$//'`; cd ..; sudo npm install npm@latest

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/635.html,未經允許,請勿轉載。