胡皓 - 枪炮与代码

从士兵到软件匠人的侃侃而谈

0%

神器推荐:用asdf-vm将你从各种语言的版本管理器之中解救出来

前言

你是不是和我一样,是一个会使用一大堆编程语言的软件开发工程师?例如:

Java、C#、JavaScript、Ruby、Python、Go……

你是不是和我一样,会在电脑上装一大堆以上各种语言的“版本管理器(Version Mananger)”,为了管理和切换不同项目的运行时(Runtime)版本?例如:

sdkman、nvm、rvm、pyenv、gvm……

你是不是和我一样,是一个浪费了大量时间在选择某种语言的版本管理器上的“强迫症患者”?例如:

到底应该用sdkman呢还是jabbar呢?

到底应该用nvm呢还是n呢?

到底应该用rvm呢还是rbenv呢?

……

你是不是和我一样,被各种语言的版本管理器污染了硬盘还整的精神分裂呢?

你是不是和我一样,期待能够有种能够管理所有语言的版本管理器,从而“一统江湖”呢?

你是不是和我一样,平时使用macOS或者Linux操作系统呢?

如果以上答案都和我一样,那这篇神器推荐就是写给你的,让我们隆重介绍这款“一统江湖的语言版本管理器”:asdf-vm

(对不起,我也用Windows,只是神器不支持……囧)

asdf-vm介绍

asdf-vm是一个能够按项目管理多种语言运行时版本的命令行工具,当前以插件的方式已经支持150+的语言或常用开发工具。

官网地址为:https://asdf-vm.com

并且,这个工具已经在2019年11月的“ThoughtWorks技术雷达”中被第一次纳入雷达范围,当前处于“评估”状态。

评估:在了解它将对你的企业产生什么影响的前提下值得探索。

相比于安装一大堆“专款专用”的版本管理工具来说,asdf-vm具备以下特点:

  • 用一个命令行工具支持多种编程语言
  • 用完全一致的命令管理所有的编程语言
  • 可以通过一个配置文件在一个地方保持全局的默认配置
  • 可以通过一个 .tool-versions 配置文件按工程进行单独配置
  • 支持现有的配置文件以方便迁移现有版本管理工具的使用,例如: .node-version, .nvmrc, .ruby-version
  • 在目录切换的时候自动切换运行时的版本
  • 通过简洁的插件系统添加多种编程语言的支持
  • 由插件自身管理命令行自动完成脚本,而不需要你自己去配置!

而且这个工具的名字起的也很有特色——asdf对应的就是标准键盘上左手默认放在上面的A S D F四个按键,又好按又好记。

使用方法

工具的安装方法非常简单,在这里就不过多介绍了,可以看官网说明。在这里主要给大家快速展示下常用的使用方法。

安装语言插件

安装完成后,可以首先通过以下命令列出所有支持的语言插件:

1
asdf plugin list all

当然,如果想快速知道某种语言是否已被支持,可以用grep根据关键字进行快速查找,例如:

1
asdf plugin list all | grep golang

每种语言的一些特殊使用要求和注意事项,可以查看该语言的插件页面。

安装某种语言的可用版本

在安装了某种语言的插件之后,可以通过asdf list all <name>命令查看所有在线的可用版本,例如:

1
asdf list all golang

然后,根据自己的需要,通过asdf install [<name> <version]命令安装指定的语言版本,例如:

1
asdf install golang 1.13.6

PS:小心点,如果你没有加版本号,则默认安装的是该语言的所有可用版本!

在安装完成后,可以通过以下命令显示所有已安装的语言和版本:

1
asdf list

使用某种语言的已安装版本

在日常使用时,切换指定的语言版本非常简单。

如果仅仅是在当前的shell会话中临时进行切换,可以使用asdf shell <name> <version>命令,例如:

1
asdf shell golang 1.13.6

如果希望设置在某个目录之下使用特定的版本,可以使用asdf local <name> <version>命令,这个命令能够在当前文件夹下生成一个.tool-version文件记录指定的语言和版本号,这样下回再从命令行访问改目录的时候,就会自动切换到对应的语言版本(同时还兼容常见的其他版本管理器的配置文件),例如:

1
asdf local golang 1.13.6

如果希望在全局设置默认的语言版本,则可以使用asdf global <name> <version>命令,这个命令能够在用户的$HOME文件夹下生成一个.tool-version文件记录默认的语言和版本号,例如:

1
asdf global golang 1.13.6

怎么样?以上命令是不是非常简单好用?

从现在开始,用asdf-vm来挨个替换你电脑上各种专用的运行时版本管理器吧!


欢迎关注我的个人公众号

微信搜索:枪炮与代码,或者搜索公众号ID:guns_n_code

枪炮与玫瑰