compositor.lock:como funciona?
-
12-12-2019 - |
Pergunta
Estou tentando entender esta parte: http://getcomposer.org/doc/02-libraries.md#lock-file
este arquivo de bloqueio não terá nenhum efeito em outros projetos que dependem dele.Só tem efeito no projeto principal"
Isso significa que se o projeto P depende da biblioteca A e a biblioteca A depende da biblioteca B v1.3, o projeto P não se importará com a versão da biblioteca B e possivelmente instalará B 1.4?Qual é o objetivo então?
Ou significa o contrário, como seria de esperar de um gerenciador de dependências?
Solução
As dependências do compositor são definidas em composer.json
.Ao executar o compositor install pela primeira vez ou ao executar o compositor atualize um arquivo de bloqueio chamado composer.lock
Será criado.
A documentação citada refere-se apenas ao arquivo de bloqueio.Se o seu projeto P depende da biblioteca A e A depende de B v1.3.***, então se A contiver um arquivo de bloqueio informando que alguém executou "atualização do compositor", resultando na instalação de B v1.3.2 e, em seguida, instalando A em seu projeto P ainda pode instalar o 1.3.3, já que o composer.json
(não .lock
!) definiu a dependência como 1.3.*.
Os arquivos de bloqueio sempre contêm números de versão exatos e são úteis para comunicar a versão testada aos colegas ou ao publicar um aplicativo.Para bibliotecas, as informações de dependência em composer.json
é tudo o que importa.
Outras dicas
composer.lock
registra as versões exatas que estão instaladas.Para que você esteja na mesma versão de seus colegas de trabalho.
instalação do compositor
- Verificar se há
composer.lock
arquivo - Caso contrário, gere automaticamente
composer.lock
arquivo (usandocomposer update
) - Instale as versões especificadas registradas no
composer.lock
arquivo
atualização do compositor
- Passar pela
composer.json
arquivo - Verifique a disponibilidade de versões mais recentes (mais recentes), com base nos critérios de versão mencionados (por exemplo,1.12.*)
- Instale as versões mais recentes possíveis (de acordo com acima)
- Atualizar
composer.lock
arquivo com versões instaladas
Então, em uma lista de verificação simples.
Se você quiser manter todos os colegas de trabalho nas mesmas versões que você...
- Comprometa seu
composer.lock
para GIT (ou vcs que você tem) - Peça a outras pessoas para obterem essa versão do
composer.lock
arquivo - Sempre use
composer install
para obter as dependências corretas
Se você deseja atualizar as dependências do sistema para novas versões
- Verifique o arquivo compositor.json para especificações de versão.
- Faça um
composer update
- Isto mudará o
composer.lock
arquivo com versões mais recentes - Envie para o GIT (ou vcs)
- Peça a outros para obtê-lo e
composer install
A seguir será uma leitura muito boa
https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file
Aproveite o poder de composer.lock
arquivo!
O objetivo do arquivo de bloqueio é registrar as versões exatas que estão instaladas para que possam ser reinstaladas.Isso significa que se você tiver uma especificação de versão 1.* e seu colega de trabalho executar composer update
que instala 1.2.4 e, em seguida, envia o arquivo compositor.lock, quando você composer install
, você também obterá o 1.2.4, mesmo que o 1.3.0 tenha sido lançado.Isso garante que todos que trabalham no projeto tenham exatamente a mesma versão.Leia mais aqui Compositor:É tudo sobre o arquivo de bloqueio