Iago Frota

Desenvolvedor Web

Freelancer

Fotografo

Iago Frota

Desenvolvedor Web

Freelancer

Fotografo

Postagens

Versionar ou não versionar o composer.lock

14 de maio de 2020 Git, Projeto pessoal
Versionar ou não versionar o composer.lock

Há um bom tempo atrás, debati com um colega de trabalho sobre a necessidade de se versionar o arquivo composer.lock. Na época, tivemos boas discussões referente a isso, então resolvi criar um artigo explicando sobre o que é e a necessidade de se versionar o arquivo composer.lock.

Executando o comando composer install

Introdução

O arquivo composer.lock, será criado, caso ele não exista, quando executamos o comando

composer install

Nele terá os pacotes e versões definidos no arquivo composer.json, inclusive, toda a as dependências dos pacotes que foram baixados.

Por fim, no arquivo composer.lock, terá toda a hierarquia de pacotes e dependências dos pacotes com as suas versões “bloqueadas”.

Motivações e Vantagens

Acredito que com a introdução, você já deve ter adiantado a vantagem de todo o time do projeto baixar os pacotes nas mesmas versões. Mas não é só isso!

Além de garantir de que todo time irá trabalhar utilizando as mesmas versões dos pacotes e suas dependências, você terá uma maior rapidez na instalação desses pacotes, por que o Composer não irá precisar ficar tentando descobrir qual versão de tal pacote ou dependência deverá ser instalado. Tudo já está lá no composer.lock.

Conselho

Não é uma boa prática executar o comando composer update sem um bom motivo. A explicação para isso seria que você irá atualizar todos os pacotes. Isso poderá atualizar algum pacote para um versão quebrada. Logo, acredito que o recomendado seria apenas executar o comando composer install. Irei explicar melhor a seguir.

1. Executar o composer install quando não existe o composer.lock

Executando esse comando, você irá baixar os pacotes definidos no arquivo composer.json, com isso as dependências, e por fim, será gerado o composer.lock com os pacotes nas versões definidas no composer.json.

2. Executar o comando composer install quando existe o composer.lock

Fazendo isso, o Composer irá consulta o composer.lock e baixar exatamente as versões dos pacotes e dependências definidas lá. Aqui, os pacotes será baixados em um velocidade maior, devido as versões das dependências já estarem definidas.

3. Executar o comando composer update

Com esse comando, você irá atualizar todos os pacotes e dependências para uma versão superior a atual. Caso você não tenha deixado a versão dos pacotes estática, claro. Fazer isso não é interessante, pois você poderá atualizar um de seus pacotes para uma versão com problemas. Nessa situação, o composer.lock será atualizado por completo.

Mas aí você me pergunta: “E seu eu quiser atualizar um certo pacote?”. Simples. Execute o comando composer update [pacote].

Exemplo:

composer update firebase/php-jwt

Com isso, você irá atualizar somente esse pacote e o composer.lock será atualizado pontualmente.

Executar o comando composer install é seguro, pois ele irá adicionar somente o que foi definido no composer.json

Executar o comando composer update, sem definir o pacote, não é tão seguro assim, pois ele irá atualizar a versão de todos os pacotes e dependências automáticamente

Conclusão

Por fim, será muito interessante você versionar o arquivo composer.lock e deixar a pasta /vendor no .gitignore. Além de considerar, sempre, utilizar o composer install em vez do composer update.

Espero que eu tenha sido claro sobre as motivações e vantagens em versionar o composer.lock. Espero, também, que os conselhos tenham sido úteis.

Obrigado!

Taggs:
Write a comment

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.