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