vfox 是 2023 年底出现的一款用 go 编写的 SDK 版本管理器,由 hellogithub 引流而被大家了解。目前正致力于模仿基于 shell 脚本的版本管理器 asdf-vm 。
https://github.com/version-fox/vfox
vmr 是 2024 年 3 月发布的一款用 go 编写的 SDK 版本管理工具,无需插件,开箱即用,同样支持多种语言,覆盖面广。
https://github.com/gvcgo/version-manager
下面比较一下二者的差异和优势。
1 、架构方面:
vfox 应该是从 neovim 、g(一款国内程序员写的 go 语言版本管理器)、nvm 、asdf-vm 获取的灵感。它引入 lua 运行时,将版本爬虫部分塞进 lua 脚本中,作为插件系统,一种语言对应一个插件。想要管理某种语言的 SDK ,就需要安装对应的插件。这种方式对 vfox 本身而言,带来了一定复杂度。主要在于爬虫往往不能够统一,往往插件和主程序需要一起修改,比较麻烦,也不够稳定。好处是,更多的用户可以通过编写 lua 插件的方式参与项目维护。
vmr 放弃了插件模式。而是剥离了版本爬虫部分,将版本爬虫单独部署在服务器,定时获取版本信息,预处理成统一格式,并同步到版本仓库。vmr 主程序只需获取版本仓库中的 SDK 版本信息,即可方便地展示给用户。这样做可以充分保证 vmr 主程序的稳定性,即使遇到 SDK 列表页面改版或者不稳定之类的情况,也能不受影响。同时,爬虫部分也可以集中精力做更为擅长的部分,因此 vmr 可以方便地获取到 vfox 目前难以抓到的只在 github release 发布的 SDK 或者工具。当然,vmr 的这种设计有一个缺点,就是最新版本可能有延迟。但是,鉴于一般情况下,SDK 更新的频率并不是很高,每天 2 次的同步频率已经可以满足绝大多数需求。
所以,在架构方面,如果你追求稳定,快速,可以选择 vmr 。如果你追求将来更多样化的插件支持,可以选择 vfox 。
2 、UI 方面
vfox 目前是简单的 TUI ,基于 pterm 。
vmr 的 TUI 基于 bubbletea ,在列表展示,下载进度条方面更美观。支持类似 vim 的按键操作遍历展示列表。还能根据选择的列表项目,自动生成下一步的命令并放入系统剪贴板,用户只需粘贴即可。大大减少了用户输入。用户也可以自行编辑粘贴后的命令,这样也保证了灵活性。
3 、下载速度方面
vfox 目前没提到多线程下载。
vmr 支持开启多线程下载,如果源网站支持多线程下载的话。另外,vmr 还能设置反向代理(vmr 免费提供),用于加速 github 项目的 release 内容的下载。
4 、支持广度方面
vfox 目前仅仅支持编程语言相关的 SDK ,也有少量其他工具,例如 etcd 等。vfox 有个优势的地方,就是它支持需要编译的 SDK ,但是编译需要特定的系统环境前提。
vmr 目前支持几乎所有 vfox 支持的 SDK ,但少数需要编译的除外。另外,vmr 还支持很多流行的其他 SDK 或工具,例如 bun(一个很火的 js/ts 运行时), protoc ,kubectl, neovim, vscode, lazygit, git-for-windows, vlang, v-analyzer, typst, typst-lsp, odin, upx, asciinema 等等。可以真正做到从零构建开发环境。这些 SDK 或工具很多目前只能从 github release 中获取,目前的 vfox 还无法做到。
5 、版本管理器功能方面
vfox 支持 global, session, project 三种范围模式。
vmr 也支持。实现上略有差异。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.