Quais são as diferenças entre composer update
e composer install
?
Quais são as diferenças entre composer update
e composer install
?
Respostas:
atualização do compositor
composer update
atualizará suas dependências conforme especificadas em composer.json
Por exemplo, se você precisar deste pacote como uma dependência:
"mockery/mockery": "0.9.*",
e você realmente instalou a 0.9.1
versão do pacote, a execução composer update
causará uma atualização deste pacote (por exemplo 0.9.2
, se já tiver sido lançado)
em detalhes composer update
:
composer.json
composer.json
composer.lock
para armazenar a versão dos pacotes instaladosinstalação do compositor
composer install
não atualizará nada; apenas instalará todas as dependências conforme especificado no composer.lock
arquivo
Em detalhe:
composer.lock
arquivo existe (se não, execute composer-update
e crie)composer.lock
arquivocomposer.lock
arquivoQuando instalar e quando atualizar
composer update
é usado principalmente na 'fase de desenvolvimento', para atualizar nossos pacotes de projetos de acordo com o que especificamos no composer.json
arquivo,
composer install
é usado principalmente na 'fase de implementação' para instalar nosso aplicativo em um servidor de produção ou em um ambiente de teste, usando as mesmas dependências armazenadas no arquivo composer.lock criado pela atualização do compositor.
composer global update
atualizações dependências em seu repositório global sobre sistema local ( COMPOSER_HOME
variável env)
composer update
no seu sistema local e testar seu aplicativo, depois fazer upload do composer.lock no servidor de produção e executarcomposer install
Quando você executa, composer install
ele procura um arquivo de bloqueio e instala o que estiver contido nele, se não conseguir encontrar um, ele lerá composer.json
, instalará suas dependências e gerará um arquivo de bloqueio.
Quando você executa, composer update
ele simplesmente lê composer.json
, instala as dependências e atualiza o arquivo de bloqueio (ou cria um novo arquivo de bloqueio).
composer install
composer.lock
existe.
composer.lock
arquivo.composer.lock
não não existe.
composer.json
.composer.lock
arquivo com base nos pacotes instalados.Conforme composer help install
:
O comando install lê o
composer.lock
arquivo do diretório atual, processa-o, baixa e instala todas as bibliotecas e dependências descritas nesse arquivo. Se o arquivo não existir, ele procurarácomposer.json
e fará o mesmo.
composer update
composer.json
arquivo (instala, atualiza e remove).composer.lock
arquivo de acordo com as alterações.Conforme composer help update
:
O comando update lê o
composer.json
arquivo do diretório atual, processa-o e atualiza, remove ou instala todas as dependências.
Veja também: Compositor: tudo sobre o arquivo de bloqueio
A melhor diferença entre composer update
ecomposer install
instalação do compositor
Para adicionar dependências, você precisa adicioná-lo manualmente ao arquivo composer.json.
Se o arquivo composer.lock existir, instale exatamente o que está especificado nesse arquivo
Nenhum componente será atualizado com este comando.
atualização do compositor
Para adicionar ou remover dependências, você deve adicioná-lo manualmente ao arquivo composer.json
Se você não pode (ou não sabe como adicionar ou remover uma biblioteca que é de fato fácil, basta adicionar o nome da dependência e da versão na propriedade requerida do arquivo) modificar o arquivo composer.json manualmente ou você prefira usar a linha de comando, o compositor possui funções especiais para isso:
compositor exige
Por exemplo, se queremos adicionar uma dependência com a linha de comando, simplesmente executaremos
composer require twig/twig
compositor remover
Se você deseja remover uma dependência não utilizada, executaremos simplesmente:
composer remove twig/twig --update-with-dependencies
if(composer.lock existed){
installs dependency with EXACT version in composer.lock file
} else {
installs dependency with LATEST version in composer.json
generate the composer.lock file
}
composer update = remove composer.lock -> composer install
Por que precisamos de 2 comandos. Eu acho que isso pode explicar pelo compositor.lock.
Imagine, nós não temos composer.lock
e dentro composer.json
, há uma dependência "monolog/monolog": "1.0.*"
ou "monolog/monolog": "^1.0"
.
Então, terá alguns casos
composer install
em um horário diferente.E se sempre usarmos uma versão EXATA composer.json
como "monolog/monolog": "1.0.1"
?
Ainda precisamos composer.lock
porque, composer.json
apenas rastreamos a versão principal da sua dependência, ele não pode rastrear a versão das dependências da dependência.
E se todas as dependências da dependência também usarem a versão EXACT?
Imagine que você começa com TODAS as dependências que usam a versão EXACT e não se importa composer.lock
. No entanto, alguns meses depois, você adiciona uma nova dependência (ou atualiza uma dependência antiga) e as dependências dessa dependência não usam a versão EXACT. Então é melhor cuidar composer.lock
do começo.
Além disso, há uma vantagem de uma versão semântica sobre uma versão exata. Podemos atualizar a dependência várias vezes durante o desenvolvimento e a biblioteca geralmente apresenta algumas pequenas alterações, como a correção de bugs. Então é mais fácil atualizar a dependência, que usa a versão semântica.