做为 NVM/N 的忠实用户,无意中在网上看到了更方便的管理 node 版本的工具 volta。本来觉得没啥东西,无非就是 nvm 的仿品或者替代品而已,既然我已经可以随意切换我的 node 了,为什么还要换个工具去管理我的开发环境,没甚意思。但是当我细细探究之时才发现,这个东西将来必然会取代 nvm 的地位,成为包管理的主流,设想一个场景, 在维护一个旧的项目,比如用node@12.3.0可以跑的项目,使用node@16.0.0就跑不起来,会报错。但这时手上还有其他的新项目,例如使用的是 node@18,突然需要把公司这个旧项目跑起来(node@12.3.0),当前电脑所在环境为 node@18,这时启动旧项目,突然显示报错,唉,原来忘了切换 node 环境,手动切换 nvm use xxxxxx 后,才把项目起起来,这时又需要启动新项目的环境,噢噢,尴尬,起不起来了,这时我们就可以使用 volta
volta 和 nvm 都是跨平台支持的,这里我介绍下 volta 在 mac 和 win 上的安装方法。
安装
1、mac 安装 nvm 和 volta 都很简单,这里直接使用官方的安装方法。
1 | curl https://get.volta.sh | bash |
使用以上命令就可以安装好 volta 了,使用命令验证 volta 安装是否成功。
1 | volta -v // 可以输出当前版本 |
2、windows 安装旧更加简单,去官网下载即可(https://github.com/volta-cli/volta/releases/download/v1.1.1/volta-1.1.1-windows-x86_64.msi),一路next安装
使用
如何使用 volta 安装 node?
1 | volta install node // 安装最新的node |
当我们有了多个版本的 node,就可以到项目中进行对应的设置了
1、比如我们有个 vue2 的老项目,就可以在当前项目下执行命令
1 | volta pin node@14.5.0 |
2、在 package.json 中添加配置
此时我们的项目 package.json 中会多一个配置
1 | "volta": { |
tips:如果在 package.json 将这一块手动删除,那么 volta 将找不到他想使用的版本.
当然,volta 不止可以设置 node 环境,还可以设置项目所使用的是 npm、yarn
1 | volta pin npm@8.0.0 |
执行完成之后,package.json 中会多一个配置
1 | "volta": { |
如果我们电脑安装了 volta,但是没有安装该项目相应的 node 或者 npm,不用着急,直接启动项目,然后 volta 会帮我们下载所需要的环境再启动项目(这里不需要我们停下来去安装当前项目环境,再启动项目)
以下是 volta 常用的命令
1 | volta list //查看当前环境的版本 |
总结:在开发中,我们经常拿到一个老项目时,在安装依赖时会各种报错,这时,即使像我之前使用 nvm 来管理 node,常常也不能确定这个项目到底是在哪个 node 环境下才能运行,如果我们引入了 volta,这是我们就可以在
package.json 文件中看到我们具体使用了哪个 node 环境,即使拿到这个项目开发的人不使用 volta,也可以自己手动通过 nvm 确定切换到具体的 node 环境,不需要再去和之前的开发人员或者测试人员去询问到底使用哪个
环境才能跑起来项目.
重点:
如果你安装了 volta,并且在项目中执行了 volta pin node@12.2.0,那么 volta 会自动下载 12.2.0 版本的 node,并且自动切换到 12.2.0 版本的 node 环境,当你再次启动项目时,volta 会自动切换到 12.2.0 版本的 node 环境,如果没有切换到 12.2.0 版本的 node 环境,那么大概率是你也安装了 nvm 或者 N,互相影响了,你需要删除 nvm 或者 N,重新安装 volta 或者修改环境 volta 的环境变量到最高优先级.