• 工具-nvm安装及全局依赖共享


    前言

    手里负责了多个项目,有些项目对 node 版本做了强绑定,这样依赖就需要使用 nvm 代理多个 node 版本,避免对项目进行破坏性的改动。

    然而,在使用 nvm 的过程中会遇到一些问题:

    1.全局依赖频繁安装
    2.全局缓存越来越大
    3.全局依赖配置重复操作,到最后都不知道哪个是哪个了
    4…

    问题与思路

    其实问题已经暴露了,所以需要解决的就是让 nvm 代理的所有 node 版本共用一套 全局依赖和全局缓存空间。这样一来,在切换 node 版本的时候就不需要频繁的重新安装 全局依赖 了,而且配置也只需要配置一次。

    要达到这个效果,不可避免的需要了解一下 node 的安装过长,并且要了解 nvm 是如何实现多版本管理的。

    我个人是不太喜欢去看原理性的东西的,只是通过安装结果去猜测了一下这个过程。

    首先,node 的安装会做如下几件事情:

    1.在安装路径下生成一个 nodejs 的文件夹,并将 node 相关的安装依赖放在这个路径下,而且 npm 的可执行文件也在这里。
    2.配置环境变量,将 nodejs 作为指向地址,这样 npm 放在 nodejs 下,就不需要配置了。
    3.在 npm 安装全局依赖的时候,会把 可执行文件 都放在 nodejs 下,可以被 winshell 读取到。

    如上就是我理解的 node 安装结果以及 为什么 npm 通过 global 命令安装的依赖可以在 cmd 中执行的一点认知,同时,npm 配置里面有这么两个配置 prefixcache ,这两个就是 全局依赖地址和缓存地址。

    看到这里,就可以看一下 nvm 到底做了些什么,为什么可以在电脑上安装多个 node 版本,而且,多个 node 版本的全局依赖不能互相使用?

    还是以安装结果来看:

    1.在安装路径下会生成一个 nvm 的文件夹,作为安装路径,并存放 nvm 所需依赖。
    2.配置环境变量,配置 nvm 和 node 两个环境变量。(即便是电脑上没有安装 node 也会有配置)
    3.在 环境变量的地址上 新建一个 快捷方式 ,通常在 C:\Program Files,快捷方式的名字就叫 nodejs
    4.安装一个新的版本的时候,从 nvm 配置的远程地址下载 对应node版本的 zip 包,并解压到 nvm 下。(zip版本是可以不需要安装就能用的,经历过 node 早期版本的应该都用过,下载 node 包然后手动配置 环境变量…)
    5.切换 node 版本的时候,将 那个快捷方式的指向地址改到对应版本的 node。(一开始我是懵逼的)

    因为我是从安装结果看的,可能实际上并不是这么回事,但是通过这个结果,又查看了其他大佬的配置过程,大概就是这么个情况。

    再来个所以,两相对比之后发现,如果我们把电脑上安装的所有node版本的 prefixcache 都指向同一个地址,并且在环境变量中配置这个 prefix 地址,那么就可以达到全局依赖共享以及全局缓存共享啦!

    当然,会预料到,有些 全局依赖可能和node版本有点冲突,但是有些工具类、脚手架类的并不会受到影响,到时候只需呀把有冲突的记录下来,重新安装一下就好了。

    配置过程

    一、安装 nvm

    安装 nvm 很简单,就是下载安装包,然后一路下一步到底。

    注意的地方有两点:

    1.如果电脑上已经安装了 node,nvm 会提示是否由 nvm 进行托管已经安装的,选是。
    2.建议删除本地已安装的node版本以及已有的依赖,因为配置过后原来的就没用了,除了占点硬盘空间之外,没啥用处。

    下载地址:nvm 下载 github 地址

    命令行下载:

    # 找不到了 
    
    • 1

    二、安装多个 node 版本

    使用 nvm install vx.x.x 命令进行安装。其他常用命令如下:

    # 修改 nvm 下载地址:
    # 安装完成后,打开安装目录下的setting.txt文件,修改指定位置
    node_mirror: https://npm.taobao.org/mirrors/node/
    npm_mirror: https://npm.taobao.org/mirrors/npm/
     # 查看网络可以安装的 node 版本
    nvm list available
     # 安装 指定版本 (16.5.0)
    nvm install 16.5.0
     # 使用 指定版本
    nvm use 16.5.0
     # 卸载 指定版本
    nvm uninstall 16.5.0 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    安装切换之后,使用 node -vnpm -v 来验证安装结果。

    三、配置 全局依赖地址 和 全局缓存地址

    在不依赖 nvm 的场景下安装 node 的时候,默认的 全局缓存全局依赖 地址是放在 nodejs 之下的,而在被 nvm 代理之后,各个版本之间的全局缓存和依赖是互不影响的。

    所以,就需要在各个版本之外,创建一个公共空间,用来存放全局缓存和全局依赖,并且将所有版本的 缓存和依赖 的地址指向这个公共空间,达到所有的 node版本共享 全局依赖和全局缓存的目的。同样,也可以用同样的方式实现 yarn/cnpm/pnpm… 等缓存的共享。

    具体可以看到 nvm 安装地址中,其实是有多个 版本的安装包的,其实 nvm 在切换 node 版本的时候,是修改了 nodejs 这个快捷方式的 指向地址。

    配置过程:

    1.创建地址: D:\node\node_globalD:\node\node_cache
    2.配置地址

    npm config set prefix "D:\node\node_global"
    npm config set cache "D:\node\node_cache" 
    
    • 1
    • 2

    注意: 每个版本都要修改一次哦!

    四、安装全局依赖

    在任意版本上,安装全局依赖,这时会看到提示安装成功,但是 cmd 中查不到这个命令。

    到刚才配置的地址中进行查看,相关依赖确实已经下载成功。

    这时因为没有将两个地址配置到环境变量中的原因。

    五、配置环境变量验证共享结果

    1.用户变量设置

    将用户变量中 PATH 的值:

    D:\node\node_global 
    
    • 1

    如果没有PATH,可以直接添加。

    2.系统变量设置

    添加变量 NODE_PATH 值为:

    D:\node\node_global\node_modules 
    
    • 1

    结语

    工欲善其事,必先利其器。

    这个技巧可能好多人都知道,做个记录方便换新电脑的时候查阅。

  • 相关阅读:
    [论文工具] LaTeX论文SVG和EPS矢量图转换方法详解
    【Android】PopupWindow焦点控制方式解析
    驱动开发day2
    运动无线蓝牙耳机哪个品牌好、蓝牙运动耳机排行榜10强
    【eNSP】VLAN基础配置
    C语言——指针进阶(三)
    Linux常用命令
    计算机毕业设计之java+ssm的摄影约拍系统的设计
    华为乾坤区县教育安全云服务解决方案(2)
    计算摄影——自动构图
  • 原文地址:https://blog.csdn.net/weixin_53312997/article/details/126788765