项目地址:https://github.com/gvcgo/version-manager
中文文档:https://gvcgo.github.io/vdocs/#/zh-cn/introduction
功能特点:
- 跨平台,支持Windows,Linux,MacOS
- 支持多种语言和工具,省心
- 受到lazygit的启发,拥有更友好的TUI,更符合直觉,且无需记忆任何命令
- 支持针对项目锁定SDK版本,使用cd命令切换到项目目录时,自动切换到锁定的SDK版本
- 支持反向代理/本地代理设置,提高国内用户下载体验
- 相比于其他SDK管理器,拥有更优秀的架构设计,响应更快,稳定性更高
- 无需麻烦的插件,开箱即用
- 无需docker,纯本地安装,效率更高
- 更高的可扩展性,甚至可以通过使用conda来支持数以千计的应用
竞品对比:
- fnm, nvm, gvm, pyenv, phpenv等,只支持单一语言,界面简陋,命令复杂。
- asdf-vm, mise, sdkman等,虽然支持多种语言,但要么对windows支持不够好,要么支持的语言有限,而且命令和概念复杂。
- vfox, 模仿asdf-vm,采用go+lua插件的模式。虽然解决了asdf-vm跨平台方面的缺陷,但是并不能提高效率,反而带来了开发上的麻烦,原因在于lua本身功能非常有限,所有的网页和接口数据的解析,下载安装等主要功能都需要在go主程序实现,然后与lua脚本交互。凡是复杂一点的网页,都不得不同时修改或调整go主程序和lua脚本,这影响了其支持的广度,甚至不得不使用竞品的版本仓库数据,例如,vfox的vlang, bun, kubectl, julia, protobuf等插件数据源头均来自VMR。而且,vfox用户需要自行寻找和安装插件,各种命令相对纷杂,需要用户付出一定的学习成本。所以,vfox这种模式并没有解决实质问题。
- VMR,摒弃了复杂的插件系统,剥离爬虫部分(所有SDK版本管理相关的工具,本质都是爬虫,加上解压安装、环境变变量管理),引入交互式TUI(Terminal UI),充分利用Conda forge相关资源。大大降低了学习成本,提高了响应速度和下载效率,稳定性更高,同时保持了优秀的扩展性。目前支持60多款编程语言和工具,广泛程度远非vfox等能达到。可以说VMR在设计的考虑上面,远超目前存在的所有SDK版本管理器。
动图演示: