简介

在我们平时的工作中由于一些特殊需求可能需要来回的切换我们环境的版本,比如前端的 Node.js、Java、Python、Go。每种语言都有单独的工具可以用来进行管理对应的版本,比如我使用过的 jenv 可以管理 Java,nvm 管理 Node.js,也有没使用过的 nvm管理 Go,等等,今天有个公司的项目是用 Go 语言写的,我需要安装对应的 SDK 包,第一反应就是看有没有对应的版本管理工具,后面一想要是有个可以管理多个语言的工具就好了,果不其然通过 ChatGPT 了解到确实有这样一个工具就是今天笔记整理的 asdf (看这个名字估计当时这个作者也是第二排的键盘从左往右随便按了几个字母),截止记录时这个项目在 GitHub 上有 17.7K 的 stars

项目地址

1
2
3
4
title: 'GitHub - asdf-vm/asdf: Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more'
image: 'https://opengraph.githubassets.com/107cc3e6427185d9053b87a6f143ef826cb3f3216faf5d11d0cc98197021b653/asdf-vm/asdf'
description: 'Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more - GitHub - asdf-vm/asdf: Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more'
url: 'https://github.com/asdf-vm/asdf'

安装

以下是基于 Mac 操作系统采用 brew 命令行的方式安装

1
2
3
4
title: '快速入门 | asdf'
image: 'https://logo.clearbit.com/asdf-vm.com'
description: '管理多个运行环境版本的简单命令行工具'
url: 'https://asdf-vm.com/zh-hans/guide/getting-started.html'
1
2
3
4
5
6
7
8
9
10
11
# Homebrew 安装
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

# 通过 brew 安装 asdf
brew install asdf

# 写入配置(根据 shell 类型写入,例如 Bash 的配置文件是 ~/.bashrc)
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc

# 查看版本
asdf --version

这里有个小插曲,就是我第一次执行命令 brew install asdf 在报错,提示我运行 brew update,然后我运行了后发现这个命令没有任何响应,再次执行 brew install asdf 就提示我已经安装了
安装 asdf 并查看版本

通过 asdf 安装/管理环境

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看当前全局变量的版本(展示当前已经安装并配置的环境)
asdf install
# 查看所有树形展示(会以每种语言进行划分展示,带星号的就是当前设置的版本)
asdf list
# 查看安装过的插件(安装每种语言都会先对应安装它的插件)
asdf plugin list
# 查看所有支持的插件(可以通过 grep 过滤下你需要的)
asdf plugin list all
# 查看指定语言的环境情况(nodejs/java/golang)
asdf list nodejs
# 删除指定环境
asdf uninstall <name> <version>
# 查看指定方言的链接(一般是对应方言项目的 github 地址,比如这里查看java 的)
asdf plugin list --urls | grep java

java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 安装 java 插件
asdf plugin-add java
# 查看可用的版本 jdk 发行版本太多了,厂商也很多,并且似乎java 这个插件有bug 有时候查看可用版本命令会提示 No compatible versions available (Java ),如果出现这个提示就用指定的版本先安装一个再说(我感觉和网络有关系如果代理了的话这个命令就能用)
asdf list all java
# 查看指定的版本
asdf list all java | grep 17.0.7
# 查看指定的厂商
asdf list all java | grep openjdk
# 安装指定版本 如果上面那个查看可用版本命令无法使用可以访问这个地址看看有哪些版本 https://github.com/halcyon/asdf-java/blob/master/data/jdk-macosx-x86_64.tsv 作者在这个data 目录下对每个版本进行了维护 mac linux 的 类似每个版本号是一个 key 对应一个下载地址
# 这里没办法用 latest 估计作者没有维护吧
asdf install java adoptopenjdk-17.0.7+7
# 设置全局
asdf global java adoptopenjdk-17.0.7+7
# 查看版本(如果命令执行报错或提示找不到重启下终端)
java --version

go

1
2
3
4
5
6
7
8
# 安装 go 插件
asdf plugin-add golang
# 安装 go 版本
asdf install golang latest
# 设置版本
asdf global golang <version>
# 查看版本
go version

node

1
2
3
4
5
6
7
8
# 安装 node 插件
asdf plugin-add nodejs
# 安装 node 版本
asdf install nodejs latest
# 设置版本
asdf global nodejs <version>
# 查看版本
node -v

gradle

1
2
3
4
5
6
7
8
# 安装 gradle 插件
asdf plugin-add gradle
# 安装 gradle 版本
asdf install gradle latest
# 设置版本
asdf global gradle latest
# 查看版本
gradle --version