volta如何工作

发布在 随笔

各个编程语言都有多版本管理工具,从一开始的能用,到现在的追求快速,好用,也经历了很多代的发展。光我试过的就有nvm、asdf、fnm、volta。目前最火的是volta,我就粗略翻了一下它的源代码看看它是怎么管理的

1
curl https://get.volta.sh | bash

它会自动的将以下内容增加到bash

1
2
export VOLTA_HOME="$HOME/.volta"                                                                                                         
export PATH="$VOLTA_HOME/bin:$PATH"

执行ls -alh $VOLTA_HOME/bin可以看到node,npm,npx,pnpm,yarn,yarnpkg均被指向了$HOME/.volta/volta-shim文件

查看volta-shim的执行逻辑,主要是找到对应的需要的工具版本(package.json -> default -> system),然后找到安装的可执行文件执行即可

执行它 VOLTA_LOGLEVEL=debug node可以看到类似输出

1
2
3
4
5
6
7
8
[verbose] Found default configuration at '/Users/ficapy/.volta/tools/user/platform.json'
[verbose] node@20.16.0 has already been fetched, skipping download
[verbose] yarn@1.22.22 has already been fetched, skipping download
[verbose] Active Image:
Node: 20.16.0 from project configuration
npm: 10.8.1 from project configuration
pnpm: None
Yarn: 1.22.22 from default configuration

可以看到node版本来自于project配置(即package.json)

这个slim比较有意思的是完全劫持了node,npm…etc这些命令行的访问,和其它方案,比如python的多版本管理(一般需要在shell里面添加一些脚本,每次当目录变换的时候执行一下环境检查,如果检查到新环境,就调用source .venv/bin/activate.fish)侵入性更强,但是用户更加无感知

评论和共享

  • 第 1 页 共 1 页

ficapy

author.bio


author.job


深圳