试一下用 VersionFox 替代 asdf-vm?

324 天前
 hankli

先上演示

这里有跟 asdf 的对比What is the difference with asdf?

哎, 在利用 Shell Hook 机制之后,终于实现了对于作用域的支持.

!!!!这多亏了direnv项目给了新思路, 牛逼!!

目前已实现支持三种作用域:

项目地址: https://github.com/version-fox/vfox

喜欢就给个 star🌟吧, 🙏🙏

1609 次点击
所在节点    程序员
8 条回复
Kobayashi
324 天前
原理上还是不一样的。asdf, rbenv, pyenv 等的 shim 机制本身就是为了避免反复修改 PATH 。direnv 走的是老方案,不过是自动化 PATH 的修改、恢复。
hankli
324 天前
@Kobayashi 是的, 但是 shim 也有缺点,就是太慢了. 其实这些工具无非就是软链接、操作 PATH 和 shim..... 各有优缺点, 因为要实现 shell 会话内有效, 这个软链接和 shim 方案解决不了的
hipkomh
324 天前
https://news.ycombinator.com/item?id=34583080
https://github.com/jdx/mise

前些天刚试过 rtx ( mise 改名之前叫这个),发现配合 vscode 用还是不如 asdf-vm + direnv
hankli
324 天前
@hipkomh 具体点, “不如” 是有什么问题吗, 我看看我这个有没有
hipkomh
324 天前
@hankli 有空了我试试你这个和上面的新版,如果有问题开个 issue 给你描述下~
kuanat
323 天前
支持一下~

asdf shell 一直都有,global/local/shell 都支持。我记得 shell 的实现比较粗暴,就是类似 ENV=xxx cmd 的方式。

shim 机制的问题在于需要 reshim ,比如 python pip 安装了某个可执行文件,需要 reshim 才能在当前 shell $PATH 索引到。极小概率的情况,比如某些程序运行后释放执行脚本,又硬编码 #!env python 这样会导致出错。

asdf 有个 direnv 插件,可以管理环境变量,解决每次执行都要 shim 查找的问题。(话说慢真是个问题吗?)

asdf 的优点是插件可以比较方便复用已有的构建脚本,本地构建安装而不是下载二进制文件。

另外我个人比较喜欢这种脚本都用 git 做管理的模式。
hankli
323 天前
@kuanat 感谢🙏,
>(话说慢真是个问题吗?)
实话实说,其实 100ms 和 10ms,本地开发而言, 没啥差别.... 但是对推广而言, 这确实是卖点哈哈哈哈.

> asdf 的优点是插件可以比较方便复用已有的构建脚本,本地构建安装而不是下载二进制文件。
这个确实是, 比如 python 和 ruby, 目前 VersionFox 不打算这么做, 因为对于 unix-like 环境, 安装依赖啊什么的都很方便,但是对于 windows 环境, 在 windows 上进行本地构建, 有点麻烦..使用提前构建好的二进制文件,进行分发是目前看来比较好的方式..

> 另外我个人比较喜欢这种脚本都用 git 做管理的模式。
一开始考虑过, 但是为了快速上线吧(因为不能保证 windows 环境下一定有 git, 所以使用用 git, 就必须使用 golang 实现的 git, 比如 go-git),目前先采用 http,后面看情况而定...哈哈哈
kuanat
323 天前
@hankli #7

我一开始没注意到 VersionFox 是跨全平台的。为了兼容 Windows/PS 的话,确实单可执行文件比脚本靠谱。(我觉得理智一点的开发者,在 Windows 环境不用 WSL ,也应该用 MSYS2 吧哈哈)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1007721

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX