asdf-vm—— 是一个按项目管理多语言运行时版本的命令行工具#
#article/done/published
#工具
asdf-vm 是一个按项目管理多语言运行时版本的命令行工具。它与 Ruby 的 rvm 和 Node 的 nvm 等其他命令行版本管理工具类似,但更可以通过可扩展的插件体系架构支持多语言。当前插件列表包括多种语言,以及 Bazel 或 tflint 等可能需要针对每个项目管理其运行时版本的工具。
asdf 的特点:
-
支持 Bash、Zsh、Fish。
-
支持几乎所有语言平台的运行时版本管理。
-
简单的插件系统,方便扩展新的运行时。
-
通过一个配置文件在一个地方保持全局的默认配置
-
通过一个 .tool-versions 配置文件按工程进行单独配置
安装#
asdf 支持多种平台和多种安装管理工具,以 macos 和 brew 为例
- 安装依赖
brew install coreutils curl git
- 安装 asdf
brew install asdf
查看支持的插件#
asdf plugin list all | grep nodejs
使用#
以 nodejs 为例
查看插件的安装说明,不同插件的依赖不同需要单独配置
- 安装依赖
brew install coreutils
brew install gpg
asdf plugin-add nodejs https://github.com/asdf-vm/asdf-nodejs.git
bash -c '${ASDF_DATA_DIR:=$HOME/.asdf}/plugins/nodejs/bin/import-release-team-keyring'
- 列出所有的版本
asdf list all nodejs
- 安装指定版本
asdf install nodejs latest
- 查看安装的版本
asdf list nodejs
- 设置使用的版本
asdf global nodejs 15.4.0 #全局设置,保存版本到$HOME/.tool-versions
asdf shell nodejs 15.4.0 #会话设置,保存版本到环境变量ASDF_${LANG}_VERSION
asdf local nodejs 15.4.0 #本地设置,保存版本到$PWD/.tool-versions
- 使用当前版本
asdf exec node -v
使用 asdf-direnv#
默认使用 asdf 需要使用命令 asdf exec,如果想支持使用则需要安装插件 asdf-direnv
首先要安装 direnv
curl -sfL https://direnv.net/install.sh | bash
echo 'eval "$(direnv hook zsh)"'>>~/.zshrc
安装 asdf-direnv
asdf plugin-add direnv
asdf install direnv latest
asdf global direnv `asdf list direnv latest`
mkdir -p ~/.config/direnv/ && touch ~/.config/direnv/direnvrc
echo 'source "$(asdf direnv hook asdf)"' >> ~/.config/direnv/direnvrc
项目配置
touch .envrc
echo 'use asdf' >> .envrc
direnv allow
可以直接使用了
node -v
- 查看当前版本
asdf current nodejs
- 删除版本
asdf uninstall nodejs 15.4.0