解决mac上每次升级nodejs都要重新安装扩展包的问题
程序员文章站
2022-05-15 21:06:25
虽然有了一些新生派竞品比如yarn,但使用或者习惯了npm的开发者仍然大有人在。 以前用起来没注意到这个现象,最近一段时间发现,每次随着使用brew upgrade自动升级了nodejs版本,原来安装的nodejs扩展包就不起作用了,还需要重新安装一遍。再加上一些扩展包存储网站被墙的问题,这个过程真 ......
虽然有了一些新生派竞品比如yarn,但使用或者习惯了npm的开发者仍然大有人在。
以前用起来没注意到这个现象,最近一段时间发现,每次随着使用brew upgrade自动升级了nodejs版本,原来安装的nodejs扩展包就不起作用了,还需要重新安装一遍。再加上一些扩展包存储网站被墙的问题,这个过程真是令人痛不欲生。
今天比较闲了研究了一下,发现原来的扩展包都是通过npm安装到/usr/local/lib/node_modules目录。这种设置每次升级并不影响不同版本nodejs同扩展包的配合。不过因为命令行的nodejs工具没有导出到执行路径,所以无法直接运行(比如@angular/cli)。所以在当时,我曾经手工在/etc/paths中增加了搜索执行路径:/usr/local/lib/node_modules/bin。
当前的nodejs版本,使用npm安装的扩展包,已经默认安装到了nodejs安装目录之下。使用brew安装的话,这个路径通常是:/usr/local/cellar/node/xx.xx.xx版本号/。因为不同版本位于不同目录,老版本习惯上又被清理掉了的话,那nodejs扩展包当然也要重新安装了。还有一个同时带来的烦人问题,因为这个路径经常变化,执行文件搜索路径也要每次修改。
知道了原因,解决起来也简单:
#删除掉早期的扩展包路径,这个文件夹实际上已经不使用了 #没有安装过早期版本的话,没有这个路径,当然不用删除 sudo rm -rf /usr/local/lib/node_modules #自己建立一个扩展包安装路径 sudo mkdir /usr/local/npm #设置权限 sudo chown $user:admin /usr/local/npm #让npm将扩展包安装到指定路径 echo prefix=/usr/local/npm >> ~/.npmrc #设置执行搜索路径 sudo echo /usr/local/npm/bin >> /etc/paths
这样以后nodejs版本的升级,就不会影响扩展包了。
下一篇: 冬季睡眠养生14方法 睡觉也能睡出健康