Sobes.tech
Junior

Qual é a diferença entre os ficheiros composer.json e composer.lock?

sobes.tech IA

Resposta da IA

composer.json contém as dependências do projeto (pacotes e suas versões), especificadas explicitamente (por exemplo, >=1.0 <2.0).

composer.lock é um arquivo gerado que fixa as versões exatas de todas as dependências instaladas juntamente com suas subdependências.

Diferenças:

  • Conteúdo: composer.json — requisitos de dependências, composer.lock — versões exatas das dependências instaladas.
  • Autores: composer.json — desenvolvedor, composer.lock — Composer (gerado pelo comando composer install ou composer update).
  • Objetivo: composer.json — definir dependências, composer.lock — garantir a reprodutibilidade das builds em diferentes ambientes.
  • Em sistemas de controlo de versões: Normalmente, ambos os ficheiros são adicionados (git add) e confirmados (git commit).

Ao instalar dependências, o Composer verifica primeiro o composer.lock. Se existir, instala as versões exatas dele. Caso contrário, ou se executar composer update, as dependências são selecionadas e instaladas de acordo com o composer.json, e depois o composer.lock é atualizado.