Composer lock file
Devo ou não fazer o commit do arquivo composer.lock
. Quando um ou vários packages é instalado como dependência em seu projeto, o Composer vai atualizar as informações de cada package no arquivo composer.lock
.
Ao fazer o commit do arquivo composer.lock
, e sempre que utilizar o comando composer install
, o Composer vai então instalar as versões exatas definidos anteriormente no seu projeto.
Por isso é importante fazer o commit do arquivo composer.lock
para garantir que as dependências de seu projeto sejam sempre as mesmas, isso vai evitar inconsistências e possíveis erros.
O que acontece seu eu não fazer o commit do composer.lock
Mesmo que esteja trabalhando um projeto sem a colaboração de outros developers pode acontecer inconsistências nas dependências do seu projeto.
Imagine o seguinte cenário onde você instalou o seguinte package como dependência, isso em seu ambiente de desenvolvimento.
"require": {
"league/flysystem-aws-s3-v3": "^1.0"
},
Quando você publicar seu projeto no ambiente de produção ou até mesmo em executá-lo em outro local de desenvolvimento, tipicamente você vai executar o comando:
composer install
Como não vai existir o arquivo composer.lock
na raiz do projeto, o Composer então vai instalar a versão mais recente do package league/flysystem-aws-s3-v3
.
Até aqui tudo bem, mas digamos que alguns dias após o início do desenvolvimento do seu projeto a versão v1.2.0
do package league/flysystem-aws-s3-v3
foi lançado, então quando você instalar as dependências ao invés de obter a versão v1.0.0
, que foi testado no ambiente de desenvolvimento, será instalado a versão v1.2.x
.
Nesse momento que surge o problema! Se por ventura, alguma mudança no package teve algum breaking changes seu projeto pode estar com algum tipo de bug.
Por isso é fundamental fazer o commit do composer.lock
sempre que desejar manter a consistência e instalar as versões exatas de suas dependências em seu projeto.
Em que situação não é necessário comitar composer.lock
As vezes, é desnecessário comitar composer.lock
quando estiver desenvolvendo uma library.
Mais detalhes
https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file