GoForum › 🌐 V2EX
vfox 1.0.0 发布~
hankli ·
2026-01-14 13:58 ·
0 次点赞 · 2 条回复
前言
vfox 已经 2 年了,中间我也经历了裁员,并没有花太多精力去维护和宣传,非常感谢社区各位小伙伴的贡献和维护~
最近我重新审视了项目,决定花时间彻底解决 vfox 遗留多时的核心问题。
适合 vfox 的版本管理方案
版本管理工具的本质是对 PATH 环境变量的管理。目前常见的方案可以归为两类:纯 PATH (绝对路径)、Shim ( shell 脚本包装/软链)
vfox 从早期版本分别使用过这两种方案,但结果都不够理想。结合 vfox 作用域的功能及限制,最终决定采用:符号链接 + PATH 操作的混合策略。
这种方案既保留了两种方式的优势,又规避了各自的缺陷,是我认为目前最适合通用版本管理器的解决方案。ps: 有些问题没有绝对的解决,但是可以相对缓解~
具体实现细节请查看下方内容。
🎉 核心改进:解决临时目录问题
问题背景
在 v1.0.0 之前,无论使用 session、global 还是 project 作用域,所有 SDK 都会存储在临时目录中。这导致当 shell 关闭后,之前配置的版本信息立即失效,造成虚拟环境和 CI 流程中出现”目录不存在”的错误。
v1.0.0 方案
本版本将三个作用域的行为彻底拆分,采用更加合理的管理策略:
📍 Project 作用域(项目级)
- 在当前项目目录下自动生成
.vfox/sdks/<sdk>软链 - 将项目路径加入 PATH ,实现项目隔离
- 可选参数:
--unlink禁用此行为(不推荐) - 建议:将生成的
.vfox/目录添加到.gitignore
⏱️ Session 作用域(会话级)
- 保持原有行为,SDK 存储在临时目录中
- 与 shell 生命周期绑定,关闭 shell 自动清理
🌍 Global 作用域(全局)
- 在
~/.vfox/sdks/<sdk>下生成永久软链 - 指向实际的 SDK 版本目录
- 跨 shell 会话保持有效
优先级规则
通过 PATH 环境变量控制优先级,从高到低依次为:
#Project > Session > Global > System
$PWD/.vfox/sdks/nodejs/bin:~/.vfox/tmp/<pid>/nodejs/bin:~/.vfox/sdks/nodejs/bin:/usr/bin:...
具体用法请参考文档
其他功能
新配置格式支持
- 引入
vfox.toml和.vfox.toml新配置格式,提供更清晰的配置体验 - 完全兼容旧版
.tool-versions格式,确保平滑迁移
多用户支持
- 支持多用户场景,每个用户拥有独立配置空间
- 支持全局配置和 SDK 安装,便于团队环境统一管理
Exec 命令
- 新增
exec命令,允许在指定 SDK 版本下执行任意命令 - 完美支持 CI/CD 流程和 VSCode 集成
- 用法示例:
vfox x nodejs@20 -- node -v
其他更多改进,请看release
官网: https://vfox.dev/ 仓库: https://github.com/version-fox/vfox
2 条回复
@z960112559 哈哈哈,谢谢支持
添加回复
你还需要 登录
后发表回复
恭喜 1.0 发布,挺好用的