自制软件:在node @ 8旁边安装最新的npm版本

时间:2018-08-10 07:01:48

标签: node.js npm homebrew

情况

我正在使用LTS版本的node,即node @ 8,并通过自制软件将其安装在macOS High Sierra上。它带有自己的npm版本,即npm v5.6.0

当我输入which node时,我还会得到/usr/local/opt/node@8/bin/node包内的npm版本的node@8

当我运行npm install -g npm时,控制台输出:

/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
+ npm@6.3.0
added 1 package and updated 3 packages in 9.884s

...但是npm --version仍然显示我在5.6.0上。

问题

鉴于此,我如何使用自制软件或npm,独立于npm6更新到版本node

1 个答案:

答案 0 :(得分:0)

简短版本

确保usr/local/bin/usr/local/opt/node@8/bin出现在PATH的前面。


长版

在安装node@8时,出于某种原因,我将export PATH=/usr/local/opt/node@8/bin:$PATH添加到了我的.bash_profile(或者在您的情况下,可能是.bash_rc)中,将/usr/local/opt/node@8/bin放在了>开始,即我的PATH的前几项是:usr/local/opt/node@8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ...

在这种情况下,npm首先在/usr/local/opt/node@8/bin中搜索可执行文件(并发现/usr/local/opt/node@8/bin/npm指向版本5),然后再在/usr/local/bin中进行搜索。 /usr/local/bin/npm(指向版本6)。

因此,我从export PATH=/usr/local/opt/node@8/bin:$PATH中删除了.bash_profile。我还可以将.bash_profile中的条目更改为export PATH=$PATH:/usr/local/opt/node@8/bin,该条目将/usr/local/opt/node@8/bin附加到PATH的 end 而不是将其添加到PATH的开头

现在npm首先在/usr/local/bin中搜索可执行文件,并找到版本6。

感谢@OrtomalaLokni将我指向您评论中的PATH。


附加说明:由于/usr/local/opt/node@8/bin node 创建了一个符号链接,因此无需在PATH中添加brew link node@8,运行{ {1}},即ls -lh /usr/local/bin/npm指向/usr/local/bin/node

现在我已经不记得为什么我最初将/usr/local/opt/node@8/bin/node添加到PATH了。