composer installставить рівно ті версії, що записані вcomposer.lock. Нічого не оновлює.composer updateшукає найновіші версії, дозволені обмеженнями зcomposer.json, ставить їх і переписуєcomposer.lock.
Звідси правило:
- На проді, в CI і після
git pull- лишеinstall. Так у всіх однакові версії, і те, що перевірили тести, саме те, що поїде на сервер. update- свідома дія розробника, щоб оновити залежності. Після неї ганяють тести і комітять новийcomposer.lock.
composer install --no-dev --optimize-autoloader # прод
composer update laravel/framework --with-dependencies # оновити один пакет
Пастка: composer update без аргументів оновлює все одразу. Якщо після нього щось зламалося, важко зрозуміти, який пакет винен. Краще оновлювати пакети поштучно чи невеликими групами.
Якщо composer.lock немає, install поводиться як update і створює його.