Каковы различия между обновлением композитора и его установкой?
Каковы различия между composer update
а также composer install
?
3 ответа
обновление композитора
composer update
обновит ваши зависимости, как они указаны в composer.json
Например, если вам требуется этот пакет в качестве зависимости:
"mockery/mockery": "0.9.*",
и вы на самом деле установили 0.9.1
версия пакета, работающая composer update
приведет к обновлению этого пакета (например, до 0.9.2
, если он уже вышел)
в деталях composer update
будут:
- Читать
composer.json
- Удалить установленные пакеты, которые больше не требуются в
composer.json
- Проверьте наличие последних версий необходимых пакетов
- Установите последние версии ваших пакетов
- Обновить
composer.lock
хранить версию установленных пакетов
композитор установить
composer install
не будет ничего обновлять; он просто установит все зависимости, как указано в composer.lock
файл
В деталях:
- Проверить, если
composer.lock
файл существует (если нет, запуститеcomposer-update
и создать его) - Читать
composer.lock
файл - Установите пакеты, указанные в
composer.lock
файл
Когда устанавливать и когда обновлять
composer update
в основном используется в "фазе разработки", чтобы обновить наши пакеты проектов в соответствии с тем, что мы указали вcomposer.json
файл,composer install
в основном используется на этапе развертывания для установки нашего приложения на производственном сервере или в среде тестирования, используя те же зависимости, которые хранятся в файле composer.lock, созданном обновлением composer.
Когда вы запускаете composer install, он ищет файл блокировки и устанавливает все, что в нем содержится, если он не может его найти, он читает composer.json, устанавливает его зависимости и генерирует файл блокировки.
Когда вы запускаете обновление composer, он просто читает composer.json, устанавливает зависимости и обновляет файл блокировки (или создает новый файл блокировки).
composer install
- Если
composer.lock
существует.- Обрабатывает и устанавливает зависимости от
composer.lock
файл.
- Обрабатывает и устанавливает зависимости от
- Если
composer.lock
не существует- Процесс установки пакетов из
composer.json
, - Создает
composer.lock
файл на основе установленных пакетов.
- Процесс установки пакетов из
Согласно: composer help install
:
Команда установки читает
composer.lock
файл из текущего каталога, обрабатывает его, загружает и устанавливает все библиотеки и зависимости, описанные в этом файле. Если файл не существует, он будет искатьcomposer.json
и сделай то же самое.
composer update
- Обрабатывает зависимости от
composer.json
файл (устанавливает, обновляет и удаляет). - Создает или обновляет
composer.lock
файл в соответствии с изменениями.
Согласно: composer help update
:
Команда обновления читает
composer.json
файл из текущего каталога, обрабатывает его и обновляет, удаляет или устанавливает все зависимости.
Смотрите также: Composer: все дело в файле блокировки
композитор установить
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
Зачем нужны 2 команды. Думаю, это можно объяснить с помощью composer.lock.
Представьте себе, мы НЕ имеемcomposer.lock
И в composer.json
, есть зависимость "monolog/monolog": "1.0.*"
или "monolog/monolog": "^1.0"
.
Тогда у него будет несколько случаев
- Сегодня мы хорошо работаем с текущей версией зависимостей (например, 1.0.0), но несколько месяцев спустя, обновление зависимости (например, 1.0.1) и, возможно, содержит некоторую ошибку
- Другой член команды может иметь другую версию зависимости, если он запускает
composer install
в другое время.
Что, если мы всегда будем использовать ТОЧНУЮ версию в composer.json
такие как "monolog/monolog": "1.0.1"
?
Нам все еще нужноcomposer.lock
так как composer.json
отслеживать только основную версию вашей зависимости, он не может отслеживать версию зависимостей зависимости.
Что если все зависимости зависимостей также используют ТОЧНУЮ версию?
Представьте, что вы начинаете со ВСЕХ зависимостей, которые используют ТОЧНУЮ версию, тогда вам все равно.composer.lock
. Однако несколько месяцев спустя вы добавляете новую зависимость (или обновляете старую зависимость), и зависимости этой зависимости не используют ТОЧНУЮ версию. Тогда лучше позаботитьсяcomposer.lock
с начала.
Кроме того, семантическая версия имеет преимущество перед точной версией. Мы можем обновлять зависимость много раз во время разработки, и в библиотеке часто есть небольшие изменения, такие как исправление ошибок. Тогда проще обновить зависимость, использующую семантическую версию.
Лучшая разница между composer update
а также composer install
композитор установить
Чтобы добавить зависимости, вам нужно добавить их вручную в файл composer.json.
Если файл composer.lock существует, установите именно то, что указано в этом файле
- В противном случае прочитайте файл composer.json, чтобы узнать, какие зависимости нужно установить.
- Напишите composer.lock с информацией о проекте (установленные зависимости)
Не любой компонент будет обновляться с помощью этой команды.
обновление композитора
Чтобы добавить или удалить зависимости, вам нужно добавить их вручную в файл composer.json.
- Файл composer.lock будет игнорироваться
- Зависимости файла composer.json будут установлены и обновлены (если зависимость не установлена, она будет загружена)
Если вы не можете (или не знаете, как добавить или удалить библиотеку, что на самом деле просто, просто добавьте имя зависимости и версию в свойстве require файла), измените файл composer.json вручную или вы предпочтительнее использовать командную строку вместо этого, у композитора есть специальные функции для этого:
композитор требует
Например, если мы хотим добавить зависимость с помощью командной строки, мы просто выполним
composer require twig/twig
- Файл composer.json будет изменен автоматически и будет добавлена новая зависимость
- зависимость будет загружена в проект
композитор удалить
Если вы хотите удалить неиспользуемую зависимость, мы просто выполним:
composer remove twig/twig --update-with-dependencies
- Веточка будет удалена со всеми его зависимостями