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

Der*_*ler 147 nodejs 14.04

我在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
npm@2.1.12 /usr/local/lib/node_modules/npm
vagrant@box:~$ npm -v
1.3.10
Run Code Online (Sandbox Code Playgroud)

我也尝试使用n(如How can I update my nodeJS to the latest version? 中建议的那样)进行更新,但它既不影响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
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能将 npm 更新到最新版本?

Der*_*ler 162

我仍然不明白为什么,但我必须运行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
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚关闭并重新打开我的 shell 实例以查看更新的版本。 (16认同)
  • 如果您最近重新配置为停止 `sudo`,如此处建议的:http://justjs.com/posts/npm-link-developing-your-own-npm-modules-without-tears,您可能已经更改了您的 ~/. .bashrc 文件。因此,一定要运行 `source ~/.bashrc` 否则 `npm -v` 将找不到更新的版本。 (14认同)

Asf*_*azi 65

当你第一次这样做时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 会在第一次搜索可执行路径后npm缓存它们,所以当你说第二次时,它仍然使用它第一次找到的缓存版本/usr/bin/npm

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

安装npm并执行此操作后,我的 shell 选择了新版本npm就好了。

谢谢

  • `hash -r` 拯救我的屁股。XD (4认同)

bla*_*899 43

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

纳米

检查您拥有的当前版本:

node -v
Run Code Online (Sandbox Code Playgroud)

以下内容会清除您的缓存。

sudo npm cache clean -f
Run Code Online (Sandbox Code Playgroud)

安装 n

sudo npm install -g n
Run Code Online (Sandbox Code Playgroud)

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

sudo n 0.8.11
Run Code Online (Sandbox Code Playgroud)

或者只是告诉它安装最新的稳定版本。两者都可能需要一段时间。

sudo n stable
Run Code Online (Sandbox Code Playgroud)

要查看它是否真的升级了,请运行:

node -v
Run Code Online (Sandbox Code Playgroud)

购电协议

另一个选择是通过 chris-leaPPA安装它;

sudo add-apt-repository ppa:chris-lea/node.js  
sudo apt-get update  
sudo apt-get install nodejs
Run Code Online (Sandbox Code Playgroud)

此 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)、. )。

手动

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


参考


小智 22

用一个命令将 NPM 更新到最新版本

要升级或更新 npm 的版本,只需在终端中输入:

sudo npm install npm@latest -g
Run Code Online (Sandbox Code Playgroud)

NPM 文档的页脚所述


Tom*_*wik 12

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

找出 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
Run Code Online (Sandbox Code Playgroud)

看看每个人(尤其是懒人)的强大单线

cd `whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{18\}$//'`; cd ..; sudo npm install npm@latest
Run Code Online (Sandbox Code Playgroud)