nvm版本管理+自动切换node版本
title: nvm版本管理+自动切换node版本 id: d4d343eb2df894cd3ee631396e674278 tags: [] date: 2000/01/01 00:00:00 updated: 2024/04/16 14:08:26 isPublic: true --#|[分隔]|#--
nvm版本管理+自动切换node版本
nvm 官方教程:https://github.com/nvm-sh/nvm。
在日常的前端或node后台开发中,使用的部分node依赖,可能不支持当前使用的node版本,这时候如果还想使用这个依赖愉快的开发,那只能切换node版本了。
然而,卸载和安装node的麻烦程度虽然还能接受,但在其他项目,依然使用高版本node的语法支持。
这时候就需要 nvm 了,nvm就是node版本管理器,使用它可以同时安装多个版本的node,然后可以通过一行命令,轻松切换当前系统,或者当前终端使用的node版本。
下面基于mac系统,进行一些步骤的讲解。
nvm使用
nvm下面需要联网的指令,访问的node下载源默认是国外的,可能延迟比较大、甚至直接超时访问失败。
所以可以设置修改node源为国内的淘宝源,可以从此页面查看淘宝提供的node源:https://npmmirror.com/。
修改源可以在安装 nvm 后,修改配置文件,如果想单次使用,则在使用nvm的需要联网的指令时,在前面添加配置:
# 原指令
nvm ls-remote
#在前面添加配置
NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/ nvm ls-remote主要为如下一些指令:
列出当前已安装的node,和可安装的lts(长期支持稳定版)版本
nvm ls
列出所有远程服务器的版本
nvm ls-remote
列出所有远程服务器的版本中的长期支持版 (LTS版本)
nvm ls-remote --lts
安装指定版本,可模糊安装,建议先查询后安装,比如 nvm install v16.19.1
nvm install <版本号>
安装最新稳定版 node
nvm install stable
删除已安装的指定版本,语法与install类似
nvm uninstall <版本号>
设置一个默认版本,新打开的终端使用的版本
nvm alias default <版本号>
给不同的版本号添加别名
nvm alias <别名> <版本号>
取消一个别名
nvm unalias <别名>
切换当前终端使用的版本,但只针对当前终端生效,不影响其他
nvm use <版本号 或 别名>
显示当前的版本
nvm current
删除已定义的别名
nvm unalias <别名>
在当前版本 node 环境下,重新全局安装指定版本号的 npm 包
nvm reinstall-packages <版本号>
安装
既然使用nvm‘托管’,那么自己之前安装的全局node包,就需要先卸载了,防止出问题。
卸载全局安装的node包
npm、cnpm、yarn等都会被一并删掉,稍后需要重新安。
下面的指令,可以查看已经安装在全局的模块node功能模块,以便删除这些全局模块后再按照不同的 node 版本重新进行全局安装。
但注意如果查询出来的某部分目录是在 **.nvm **的子级里面,说明这部分已经是 nvm 安装的node的了,就不用卸载这部分了。
下面,是卸载步骤
也可以用
type -a node查看一下路径,不同机器和不通安装方式,位置可能不一样。
删除全局 node_modules 目录,里面其实只有几个文件夹,是npm和使用npm全局安装的比如yarn、cnpm等:
删除 node,其实就是卸载node环境了:
删除全局 node 模块注册的软链,懂linux指令语法的,大概可以看懂,下面这行的命令,就是先进入到系统的全局指令文件,筛选出其中依赖于 node_modules的所有指令(其实还是步骤1中的那几个指令),然后删除:
可以使用终端输node -v,如果提示node: command not found,就说明卸载完成了
安装 nvm
安装nvm有多种方式,下面是两种方式,建议在官网查看最新的安装语句(由于外网问题,很可能会安装失败,后面有其他安装方式):
curl方式:
wget方式:
上面两个语句,都会都会执行nvm的安装脚本,安装完成后,会有类似下面的打印:
意思是,我们需要在~/.bashrc、~/.bash_profile、~/.zshrc、~/.profile这四个文件的任意一个,加入nvm的这行指令,保存关闭,然后重启终端,就可以使用nvm指令了。
实际如果安装正常,nvm会自行在 ~/.zshrc 中插入。
v0.39.7版本的指令如下,可以直接在官网安装最新版本的nvm,粘贴最新版的指令(下面是官网提供的指令,也可以使用安装完成后,上面打印出来的指令):
当添加完成后,比如是把指令写在了~/.zshrc文件中,那保存后记得要手动执行一下执行:
重载此文件后,nvm就可以正常使用了。
更换node的下载源
nvm的node源使用的是国外地址,导致一些nvm指令会网速慢、超时等。
如果想解决,就需要换用国内的源,可以使用淘宝提供的node源:https://npmmirror.com/mirrors/node/。
有了国内源地址,后面就是使用了,一个简单的临时使用方式,是使用 nvm 指令时,在指令前配置本次指令使用的源,比如:
一劳永逸的方法就是,直接在上面提到的文件中(建议就在粘贴了nvm版本指令的文件中),添加以下指令:
最后再:
重载此文件,使配置生效。
安装失败
上面的语句有可能会由于网络问题,而安装失败。
此时可以进入 nvm 官方教程(实际就是一个 github 页面),这里会提供多种安装方式(但最终貌似都需要克隆 nvm 的仓库,我们可以手动克隆仓库了)。
但是, github 同样有无法打开的可能,那我们也打开国产 「githup」- 码云搜索 nvm-sh,找到热血网友从 github 克隆至此的项目,一样的使用。
下面大致讲解其中比较简单的一种:
Git Install:
进入到 ~ 目录,使用 git 克隆 nvm 仓库:
进入,切换到最新版本分支(实际最新分支,可再去官网看一下):
执行一下安装指令,这个指令瞬间执行完成:
最后,再一下几个文件中的任意一个,~/.bashrc 、 ~/.profile ,或 ~/.zshrc,粘贴入一下代码:
最后的最后,让系统重新读取一下这个文件,比如这个放进了 ~/.zshrc 文件中,那么执行:
完成,此时可以使用 nvm 了。
nvm自动切换node版本功能
这个功能本来不需要,但近几年发现,业务和项目太多时,可能真的就很需要了。
比如,接收过来项目,使用的 node 版本可能五花八门;自己公司开发的项目,使用固定某个 node 版本;偶尔自己研究些新技术,又可能会使用最新版的。
本来是进入某个项目,就使用 nvm use 来切换一下,但总的来说很麻烦,每次打开终端都要来这么一下。
所以还是犯懒,在网上找了找解决办法。
前置条件
后面两个解决办法,都有一个前提条件,需要在启动终端的文件夹下,或者父级文件夹,或者父父级文件夹...添加一个文件。
文件名:.nvmrc。
文件内容:你已安装、能够使用 nvm use 指令切换过去的node版本号,可以是版本全路径,也可以是省略小版本,比如:
或者
或者使用当前已安装的最新版本
放置好文件,后面两项的功能才能生效。
方案一:使用指令去查找切换(推荐)
切换node的本质,就是在打开终端时,使用 nvm use [版本号] 切换一下。
如果对 mac 或者 linux 系统稍微有些了解的程序员,都知道 ~/.zshrc 或 ~/.bashrc 这么个文件(如果使用的shell是 zsh,那是 ~/.zshrc 文件,如果是 bash,那就是 ~/.bashrc 文件)。
这个文件会在用户每次打开一个新终端时,都自动执行一下。
所以我们把下面这段 shell 脚本代码,粘贴到 ~/.zshrc 或 ~/.bashrc 文件中,保存。
如果已经按照上面的前置条件创建好了 .nvmrc 文件,写好内容,那直接到对应项目下重启终端,就会出现提示:
此时这个终端使用的 node,就是 v16.19.0 了。
方案二:使用指令去查找切换(不推荐)
网上找了找,找到了这个工具: avn 。
这个工具已不再更新了,所以安装时有点限制,不过使用没有限制。
在安装时,node版本最高只能是 node10([email protected]) ,否则会报错安装失败,不过安装完启动后,就可以随意切换 node 版本了,也就只是在安装时需要在指定 node 版本下安装。
首先新打开一个终端,保证现在使用的 node 版本是10或者10以下,否则会安装失败。
打开终端后,先全局安装:
然后启动这个工具:
如果已经按照上面的前置条件创建好了 .nvmrc 文件,写好内容,那直接到对应项目下重启终端,就会出现提示:
此时这个终端使用的 node,就是 v14.16.0 了。
nvm安装node失败的解决方法
最近遇到糟心事儿,家里的nvm安装node一直失败,看报错是网络问题。
当我执行以下指令:
于是我把两个链接都复制到浏览器,结果很快下载完成了上面两个文件。
接着把两个文件夹都解压,得到两个文件夹,里面应该都是nodev16.14.2的包内容,但里面的内容又不一样。
于是把使用终端执行以下指令:
对比后,发现下载并解压后的两个node中,第二个链接解压出来的 node-v16.14.2-darwin-x64 文件夹中的内容,是和现有的node中的东西是一样的。
于是,我就把文件夹 node-v16.14.2-darwin-x64 按照这文件夹的命名规则,更名为 v16.14.2 后,放入这个文件夹中,最后在终端输入:
发现刚进去的v16.14.2出现在「已安装」的node版本列表中。
最终解决方案
所以我们可以自己下载需要的node版本,解压、更名后,放入nvm对应的文件夹中(默认为 ~/.nvm/versions/node/ )即可,下载链接如下:
Last updated
Was this helpful?