Отличие Composer Install и Composer Update

Когда мы должны использовать composer install или composer update?

Основная тема для разговора — это composer.lock и composer.json

Сценарий 1: Без composer.lock

Предполагается, что вы только что создали новый проект PHP, создали composer.json файл и потребовали несколько пакетов. Мы можем предположить следующие:

{ 
"require": {
"monolog / monolog": "1.0. *"
}
}

На заметку: monolog/monolog:1.0.*означает получить последнюю версию монолога, которая находится между 1.0 и 1.1. В этом случае я получаю 1.0.2.

По composer install команде, поскольку composer.lock файла еще нет, composer использует composer.json файл и устанавливает пакет monolog (создает папку vendor с установленным пакетом). Все просто, правда? composer update фактически делает то же самое в этом сценарии.

Сценарий 2: с composer.lock

Предположим, что проект уже существует , и composer install or update были запущены один или несколько раз.

При запуске composer install используется composer.lock файл, который теперь имеет «блокировку» для всех пакетов, установленных вами в проекте. Преимущество этого заключается в том, если этот проект будет кем-то подхвачен и composer install запущен, вы можете быть уверены, что никакая зависимость не сломается, потому что версии соответствуют locked тому, что у вас есть в composer.lock файле.

Другим преимуществом является то, что, допустим, вы находитесь в команде из 6 человек, и composer install мы можем быть уверены, что у каждого из них будет одна и та же версия / выпуск каждого пакета в любой заданный период времени до composer update запуска.

В случае composer update, он не использует файл блокировки, вместо этого он использует composer.json файл и обновляет пакеты. Это создает одну проблему: что, если в последней версии пакета может быть некорректный или новый код.

Определенно есть варианты использования для обоих, и мы должны знать, что применять в вашем случае.