这里有跟 asdf 的对比What is the difference with asdf?
哎, 在利用 Shell Hook 机制之后,终于实现了对于作用域的支持.
!!!!这多亏了direnv项目给了新思路, 牛逼!!
目前已实现支持三种作用域:
项目地址: https://github.com/version-fox/vfox
喜欢就给个 star🌟吧, 🙏🙏
1
Kobayashi 329 天前
原理上还是不一样的。asdf, rbenv, pyenv 等的 shim 机制本身就是为了避免反复修改 PATH 。direnv 走的是老方案,不过是自动化 PATH 的修改、恢复。
|
2
hankli OP @Kobayashi 是的, 但是 shim 也有缺点,就是太慢了. 其实这些工具无非就是软链接、操作 PATH 和 shim..... 各有优缺点, 因为要实现 shell 会话内有效, 这个软链接和 shim 方案解决不了的
|
3
hipkomh 328 天前
https://news.ycombinator.com/item?id=34583080
https://github.com/jdx/mise 前些天刚试过 rtx ( mise 改名之前叫这个),发现配合 vscode 用还是不如 asdf-vm + direnv |
6
kuanat 328 天前 1
支持一下~
asdf shell 一直都有,global/local/shell 都支持。我记得 shell 的实现比较粗暴,就是类似 ENV=xxx cmd 的方式。 shim 机制的问题在于需要 reshim ,比如 python pip 安装了某个可执行文件,需要 reshim 才能在当前 shell $PATH 索引到。极小概率的情况,比如某些程序运行后释放执行脚本,又硬编码 #!env python 这样会导致出错。 asdf 有个 direnv 插件,可以管理环境变量,解决每次执行都要 shim 查找的问题。(话说慢真是个问题吗?) asdf 的优点是插件可以比较方便复用已有的构建脚本,本地构建安装而不是下载二进制文件。 另外我个人比较喜欢这种脚本都用 git 做管理的模式。 |
7
hankli OP @kuanat 感谢🙏,
>(话说慢真是个问题吗?) 实话实说,其实 100ms 和 10ms,本地开发而言, 没啥差别.... 但是对推广而言, 这确实是卖点哈哈哈哈. > asdf 的优点是插件可以比较方便复用已有的构建脚本,本地构建安装而不是下载二进制文件。 这个确实是, 比如 python 和 ruby, 目前 VersionFox 不打算这么做, 因为对于 unix-like 环境, 安装依赖啊什么的都很方便,但是对于 windows 环境, 在 windows 上进行本地构建, 有点麻烦..使用提前构建好的二进制文件,进行分发是目前看来比较好的方式.. > 另外我个人比较喜欢这种脚本都用 git 做管理的模式。 一开始考虑过, 但是为了快速上线吧(因为不能保证 windows 环境下一定有 git, 所以使用用 git, 就必须使用 golang 实现的 git, 比如 go-git),目前先采用 http,后面看情况而定...哈哈哈 |