当前位置: 首页>>技术教程>>正文


你如何更新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/article/635.html,未经允许,请勿转载。