DEV Community

Cover image for Mix: Um Guia para Iniciantes sobre a Ferramenta de Build e Gerenciamento de Dependências do Elixir
Rafael Andrade
Rafael Andrade

Posted on

Mix: Um Guia para Iniciantes sobre a Ferramenta de Build e Gerenciamento de Dependências do Elixir

Introdução

O Mix é a ferramenta de build padrão do Elixir, projetada para automatizar tarefas comuns como criação de projetos, compilação, testes e gerenciamento de dependências. Embora seja semelhante a ferramentas como a CLI do dotnet, o Mix oferece maior extensibilidade e está profundamente integrado ao ecossistema do Elixir.

Recursos Principais

Criando um Projeto

Gere um novo projeto Elixir com um único comando:

mix new friends  
Enter fullscreen mode Exit fullscreen mode

Isso cria um projeto estruturado com um arquivo mix.exs no seu núcleo.

O Arquivo mix.exs

Este arquivo define as configurações do projeto, dependências e tarefas. Aqui está um exemplo mínimo:

defmodule Friends.MixProject do  
  use Mix.Project  

  def project do  
    [  
      app: :friends,  
      version: "0.1.0",  
      elixir: "~> 1.18",  
      start_permanent: Mix.env() == :prod,  
      deps: deps()  
    ]  
  end  

  def application do  
    [extra_applications: [:logger]]  
  end  

  defp deps do  
    [] # Dependências vão aqui  
  end
end  
Enter fullscreen mode Exit fullscreen mode

Gerenciamento de Dependências

Adicionando Dependências

Edite a função deps no arquivo mix.exs:

defp deps do  
  [  
    {:ecto_sql, "~> 3.0"},  
    {:postgrex, ">= 0.0.0"}  
  ]  
end  
Enter fullscreen mode Exit fullscreen mode

⚠️ Nota: Ao contrário do npm ou cargo, o Mix não possui um comando como mix deps.add — edite o mix.exs manualmente.

Restaurando Dependências

mix deps.get      # Busca as dependências  
mix deps.compile  # Compila-as  
Enter fullscreen mode Exit fullscreen mode

Atualizando Dependências

Atualize um pacote específico:

mix deps.update ecto_sql  
Enter fullscreen mode Exit fullscreen mode

Atualize todos os pacotes:

mix deps.update --all  
Enter fullscreen mode Exit fullscreen mode

O Mix usa um arquivo mix.lock para garantir versões consistentes em diferentes ambientes.

Fluxos de Trabalho Comuns

Compilando o Projeto

mix compile  
Enter fullscreen mode Exit fullscreen mode

Executando Testes

mix test  
Enter fullscreen mode Exit fullscreen mode

Estendendo o Mix

Aliases (Atalhos)

Os aliases do Mix são atalhos personalizados definidos no arquivo mix.exs para simplificar ou combinar tarefas repetitivas. Eles permitem:

  • Encadear múltiplos comandos do Mix em um só.
  • Criar fluxos de trabalho específicos para o projeto.
  • Simplificar processos complexos de build/teste/deploy.
def project do  
  [  
    ...,  
    aliases: aliases()  
  ]  
end  

defp aliases do  
  [  
    build_test: ["compile", "test"],  
    "build:test": ["compile", "test"]  
  ]  
end  
Enter fullscreen mode Exit fullscreen mode

Execute com:

mix build_test  
Enter fullscreen mode Exit fullscreen mode

Tarefas Personalizadas

Crie tarefas reutilizáveis (ex: lib/mix/tasks/hello.ex):

defmodule Mix.Tasks.Hello do  
  @moduledoc "Exibe uma saudação: `mix help hello`"  
  use Mix.Task  

  @shortdoc "Imprime 'hello' no console"  
  def run(_args) do  
    IO.puts("hello")  
  end  
end  
Enter fullscreen mode Exit fullscreen mode

Execute com:

mix hello  
Enter fullscreen mode Exit fullscreen mode

Por que o Mix se Destaca?

  • Extensível: Frameworks como Phoenix e Ecto adicionam suas próprias tarefas (ex: mix ecto.gen.repo).
  • Completo: Tarefas embutidas para testes, compilação e gerenciamento de dependências.
  • Comunidade Ativa: A maioria das bibliotecas Elixir se integra perfeitamente ao Mix.

Conclusão

O Mix é a espinha dorsal do desenvolvimento em Elixir. Sua simplicidade para tarefas comuns e flexibilidade para customização o tornam indispensável.

Próximos Passos:

Top comments (0)

👋 Kindness is contagious

Engage with a wealth of insights in this thoughtful article, valued within the supportive DEV Community. Coders of every background are welcome to join in and add to our collective wisdom.

A sincere "thank you" often brightens someone’s day. Share your gratitude in the comments below!

On DEV, the act of sharing knowledge eases our journey and fortifies our community ties. Found value in this? A quick thank you to the author can make a significant impact.

Okay