Desenvolvimento

ASDF: Gerencie múltiplas versões de Python, Java e Node

Já precisou instalar mais de uma versão de uma ferramenta para determinado projeto? Seja porque sua automação com Terraform não funciona com a versão mais recente, ou porque um bug no Node.js só aparece em uma versão específica? Neste artigo vamos apresentar uma ferramenta que resolve esses e outros problemas com uma abordagem unificada.

Por que usar o ASDF?

O ASDF surge como uma alternativa mais genérica a ferramentas específicas, como o nvm que gerencia apenas versões do Node.js. Já falamos sobre isso no artigo Instalando e gerenciando várias versões do Node.js mas aqui o foco é no ASDF como uma solução extensível para múltiplas linguagens.

O objetivo do ASDF é fornecer um núcleo simples para que a comunidade possa desenvolver plugins reutilizáveis, permitindo o gerenciamento de versões de praticamente qualquer ferramenta.

Pré Requisitos

Até o momento em que escrevemos este artigo, o ASDF é compatível com Linux e macOS. Usuários de Windows precisarão instalar o WSL (Windows Subsystem for Linux).

Será necessário ter o curl instalados na máquina. Para instalar em distribuições baseadas no Debian

sudo apt install curl
Bash

Instalação do ASDF core

Estamos utilizando o Bash no Ubuntu via WSL. Caso utilize outro shell, ajuste o comando conforme a documentação oficial.

Usaremos um script de instalação desenvolvido por nós. Se quiser verificar o código antes, ele está disponível no repositório do Code in Loop no GitHub:

sudo curl -fsSL https://raw.githubusercontent.com/codeinloop/asdf-installer/main/install-latest-asdf.sh | bash
Bash

❗Execute com o usuário final que utilizará o ASDF, e não como root, para evitar configurações incorretas.

Para testar se está tudo certo:

asdf
Bash

Entendendo o ASDF e seus principais comandos

Escopos de instalação

O ASDF permite definir escopos diferentes para as versões instaladas:

  • Global: torna a versão disponível para todos os projetos e usuários do sistema.
asdf global nodejs 16.5.0
JavaScript
  • Local: válida apenas no diretório atual (um .tool-versions é criado).
asdf local nodejs 14.20.0
JavaScript

Anatomia do ASDF: Comandos essenciais

asdf list all <PLUGIN>          # Lista todas as versões disponíveis
asdf list <PLUGIN>              # Lista as versões instaladas
asdf install <PLUGIN> <VERSAO>  # Instala uma versão específica
asdf uninstall <PLUGIN> <VERSAO> # Remove uma versão
asdf current                    # Mostra as versões em uso no diretório atual
asdf where <PLUGIN> <VERSAO>   # Mostra o caminho da instalação
asdf set <PLUGIN> <VERSAO>     # Define versão local
asdf set -u <PLUGIN> <VERSAO>  # Define versão global
asdf plugin list               # Lista plugins instalados
asdf plugin list all           # Lista todos os plugins disponíveis
asdf plugin update --all       # Atualiza todos os plugins instalados
JavaScript

Principais plugins e como instalar

Alguns plugins recomendados pelo nosso time:

Java

asdf plugin add java https://github.com/halcyon/asdf-java.git
Bash

Node.js

asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Bash

Python

asdf plugin add python
Bash

Terraform

asdf plugin add terraform https://github.com/asdf-community/asdf-hashicorp.git
Bash

Conclusão

Já conhecia o ASDF? Utiliza outra ferramenta para esse tipo de gerenciamento? Deixe seu comentário — ele pode virar um próximo artigo!

Agradecimento especial ao Eduardo, que recomendou o ASDF em um dos nossos vídeos.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.