Usando go dep para gerenciar dependências

Douglas Fernandes
bawilabs
Published in
2 min readMay 1, 2018

Nesse artigo, vamos ver como utilizar a ferramenta dep para gerenciar as dependências dos seus projetos em Go.

Porque dep?

Dep é uma ferramenta de gerenciamento de dependências, definida na própria documentação como um “experimento oficial” para golang. Através dela você pode controlar as dependências do seu projeto sem muito trabalho e definir versões específicas para garantir estabilidade em seu projeto.

Sem utilizar um gerenciador de dependências você pode se deparar com muitos problemas ao desenvolver seus projetos, como, por exemplo, descobrir que uma dependência específica usada em vários projetos acaba os quebrando por causa de uma pequena alteração que muda a assinatura de um método utilizado. Gerenciar dependências pode não ser a primeira coisa pela qual você está prestando atenção, mas vai chegar a hora em que será inevitável encarar essa tarefa.

Instalação

curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh# Somente para Bawilabs
cd $GOPATH/src
for folder in $(ls | grep -v gitlab); do echo $folder && rm -rf $folder; done

Gerenciando dependências

# executar na raiz do projeto
dep init

Quando você roda o dep init a ferramenta faz:

  1. Identifica as dependências atuais do seu projeto;
  2. Valida se essas dependências usam ou não a ferramenta dep;
  3. Escolhe a versão mais atual compatível com essas dependências.

Ao terminar de executar esse comando serão gerados dois arquivos e um diretório. O primeiro arquivo Gopkg.toml é onde ficam especificadas suas dependências, ele é como o package.json ou o pom.xml se você tiver experiência em nodejs ou java, respectivamente. O segundo arquivo Gopkg.lock é um snapshot das dependências do seu projeto, ou uma lista de todas as dependências. E por último o diretório vendor/, onde suas dependências são armazenadas, é o equivalente do diretório node_modules/ em projetos nodejs.

Caso futuramente você queira adicionar novas dependências, basta utilizar o seguinte comando:

dep ensure -add github.com/foo/bar@^2.0.0

Devo commitar meu diretório vendor?

Não.

Conclusão

Voltando à pergunta inicial, não é obrigatório seu uso, mas, definir versões para as dependências do seu projeto evita boas dores de cabeça, além de garantir que todos os integrantes do seu squad estão rodando o mesmo build em suas máquinas.

Espero que este artigo tenha mostrado o necessário para você começar a utilizar o dep. Se precisar de mais ajuda, deixe um comentário :)

--

--

Douglas Fernandes
bawilabs

Geek apaixonado por café e pelo tricolor do Morumbi