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

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

npm我在设置 Vagrant 框时遇到了问题。我注意到npm版本有点旧,所以我想用最新版本检查一下问题。

据我了解,您应该能够npm使用进行更新npm install -g 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
[email protected] /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
[email protected] /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 更新到最新版本?

答案1

我还是不明白为什么但我得跑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
[email protected] /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
[email protected] /usr/lib/node_modules/npm
vagrant@box:~$ npm -v
2.1.12

答案2

当你第一次执行 时npm install -g npm,shell(Bash)会npm在你的路径中搜索 ,找到/usr/bin/npm系统安装的包,然后使用它来安装 的新版本npm。新版本将安装在 中/usr/local/bin/npm

现在,你的路径应该有/usr/local/bin/BEFORE /usr/bin/,所以你会认为它现在会获取 中的更新版本/usr/local/bin/,对吗?错了。

Bash 将在第一次搜索可执行路径后将其缓存 (CACHE),因此当您npm第二次搜索时,它仍将使用第一次找到的缓存版本/usr/bin/npm

要告诉 Bash 清除此缓存并再次查看路径,您必须执行hash -r

安装npm并执行这些操作后,我的 shell 就可以正常接收新版本了npm

谢谢

答案3

您可以使用 npm 本身、PPA 或手动来更新 nodejs。

npm

检查当前版本:

node -v

下面的操作会清除你的缓存。

sudo npm cache clean -f

安装n

sudo npm install -g n

您可以告诉它安装特定版本,如下所示:

sudo n 0.8.11

或者直接告诉它安装最新的稳定版本。这两种方法都可能需要一段时间。

sudo n stable

要查看它是否实际升级,请运行:

node -v

电力供应协议

其他选项是通过Chris-lea 的 PPA

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)。

手动

您可以随时通过手动方式更新下载最新版本并自行安装!


参考

答案4

大多数时候我无法使用全局命令来升级它。不过,对我有用的是从所有系统节点模块的源升级包:

找出 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... 
# NOTE: on mac its in /usr/local/lib
cd /usr/lib
sudo npm install npm@latest

以下是对所有人(尤其是懒人)有用的妙语

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

相关内容