Skip to content

Introdução ​

Hi, we've recently migrated our docs and added some new pages. If you would like to help translate this page, see the "Edit this page" link at the bottom of the page.

O asdf é um gerenciador de versões. Todas as definições de versão das ferramentas estão contidas no arquivo (.tool-versions), o qual você pode compartilhar com o seu time no repositório Git de um projeto e garantir que todos estejam usando exatamente a mesma versão das ferramentas.

A maneira antiga de trabalhar necessitava diversos gerenciadores de versão, cada um deles com uma documentação, arquivos de configuração diferentes (manipulação do $PATH, shims e variáveis de ambiente, por exemplo). O asdf provê um único arquivo de configuração e uma única interface para simplificar o fluxo de desenvolvimento, podendo ser ampliado para todas as ferramentas através de um simples plugin.

Funcionamento ​

Após instalar e configurar o asdf no seu shell, plugins podem ser instalados para gerenciar determinadas ferramentas. Quando uma ferramenta é instalada por um plugin, os executáveis que foram instalados possuem shims criados para cada um deles. Quando você roda algum destes executáveis, o shim é executado, permitindo que o asdf identifique qual versão da ferramenta está configurada no arquivo .tool-versions e execute esta versão.

Projetos relacionados ​

nvm / n / rbenv etc ​

Ferramentas como o nvm, n e rbenv são escritas em shell scripts que criam shims para os executáveis instalados para essas ferramentas.

O asdf é bem similar e foi criado para competir neste meio de ferramentas de gerenciamento de versão. O grande diferencial do asdf é que seu sistema de plugins elimina a necessidade de um gerenciador de versões para cada ferramenta, esta com diferentes comandos e arquivos de configuração.

direnv ​

Aumenta os shells existentes com a possibilidade de utilizar diferentes variáveis de ambiente com base no diretório atual.

O asdf não gerencia variáveis de ambiente, entretanto existe o plugin asdf-direnv para integrar o comportamento do direnv ao asdf.

Veja a documentação do direnv para mais detalhes.

Homebrew ​

O gerenciador de pacotes faltante para o macOS (ou Linux)

O Homebrew gerencia seus pacotes e dependências destes pacotes. O asdf não gerencia dependencias, não é um gerenciador de pacotes, a escolha do gerenciador de pacotes é reservada ao usuário.

Veja a documentação do Homebrew para mais detalhes.

NixOS ​

O Nix é uma ferramenta que relaciona o gerenciamento de pacotes e as configurações de sistema.

O NixOS visa construir ambientes verdadeiramente replicáveis através da gerência das versões exatas dos pacotes e dependências de cada ferramenta, algo que o asdf não faz. O NixOS faz isso através da sua própria linguagem de programação, muitas ferramentas da linha de comando e uma coleção de pacotes contendo mais de 60,000 destes.

Novamente, o asdf não gerencia dependências/pacotes e não é um gerenciador de pacotes.

Veja a documentação do NixOS para mais detalhes.

Por que usar o asdf? ​

O asdf garante que equipes utilizem exatamente a mesma versão de alguma ferramenta, com suporte para diversas delas através do sistema de plugins e a simplicidade e familiaridade de ser um único shell script que você inclui na configuração do seu shell

Nota

O asdf não foi feito para ser o gerenciador de pacotes do seu sistema, mas sim uma ferramenta para gerenciar versões de outras ferramentas. Não é por que é possível criar um plugin para qualquer ferramenta/linguagem com o asdf que esta sempre será a solução mais adequada.