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 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 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 ⚠️ 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 Atualizando Dependências Atualize um pacote específico: mix deps.update ecto_sql Atualize todos os pacotes: mix deps.update --all O Mix usa um arquivo mix.lock para garantir versões consistentes em diferentes ambientes. Fluxos de Trabalho Comuns Compilando o Projeto mix compile Executando Testes mix test 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 Execute com: mix build_test 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 Execute com: mix hello 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: Explore a documentação oficial do Mix.

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
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
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
⚠️ 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
Atualizando Dependências
Atualize um pacote específico:
mix deps.update ecto_sql
Atualize todos os pacotes:
mix deps.update --all
O Mix usa um arquivo mix.lock para garantir versões consistentes em diferentes ambientes.
Fluxos de Trabalho Comuns
Compilando o Projeto
mix compile
Executando Testes
mix test
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
Execute com:
mix build_test
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
Execute com:
mix hello
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:
- Explore a documentação oficial do Mix.