Composer - это инструмент управления зависимостями в PHP. Он позволяет вам декларировать библиотеки, от которых зависит ваш проект, и он будет управлять (устанавливать / обновлять) их для вас.
update
install
require
composer update
Задача команды composer update — обновить зависимости проекта до актуальных версий в соответствии с правилами, записанными в composer.json.
Для каждого заявленного в проекте пакета менеджер находит его источник, считывает информацию о версиях и зависимостях, а затем рекурсивно повторяет то же самое для зависимостей пакета, чтобы получить полное дерево. После этого Composer разрешает зависимости с учетом версионных правил, объявленных во всех собранных composer.json файлах.
Плоский массив таких объектов будет записан в формате JSON в файл composer.lock по завершении команды. Это и есть фиксация зависимостей в Composer.
После всех этих операций менеджер сопоставляет разрешенные зависимости с уже имеющимися пакетами в папке vendor/ и устраняет несоответствия: удаляет устаревшие и ненужные пакеты, скачивает (или подтягивает из кэша) новые и добавленные.
composer install
Задача команды composer install — установить зафиксированные зависимости проекта.
При запуске команды Composer первым делом ищет файл composer.lock. В случае успеха, минуя вышеописанные сложные процедуры, менеджер мгновенно получает массив разрешенных зависимостей из lock-файла и сразу приступает к обновлению папки vendor/.
Если composer.lock отсутствует, команда выполняет те же действия, что и composer update (включая создание lock-файла).
composer require
Добавляет требуемый пакет в файл composer.json и устанавливает его в ваш проект.
Команда require изменяет composer.json, находящийся в текущей папке. Если пакету требуются зависимости, то они будут установлены или обновлены. А также будет обновлён composer.lock.
composer. json - содержит список зависимостей с версиоными правилами
composer. lock - генерируется автоматический, сохраняет текущий список установленных зависимостей и их версии
Команда global позволяет другие команды такие, как install, require или update запускать так, как если бы вы запускали их из каталога COMPOSER_HOME.
Это может использоваться для того, чтобы установить командные утилиты глобально.
При установке пакетов composer проходится по их правилам в composer.json и генерирует файл autoload.php в vendor.
Когда зависимость указывается в composer.json, то composer берет имя пакета и ищет его во всех репозиториях, которые указаны в repositories. Если дополнительные репозитории не указаны или пакет в них найти не удается, тогда поиск идет по packagist. Когда пакет найден, тригаются функции управления версиями, чтобы найти лучшую для указанного пакета.
Если обратное не указано, то при поиске учитываются только стабильные версии.
6. Структура composer.json, что это за ключи и как используются (в т.ч. в Drupal 8)? ○ require ○ require-dev ○ type ○ minimum-stability ○ extra ○ repositories
○ require - список зависимостей для работы проекта
○ require-dev - список зависимостей для разработки проекта
○ type - тип репозитория, указывающийся как параметр репозитория в соответствующем разделе
○ minimum-stability - определяет минимальную стабильность пакета
○ extra - дополнительные параметры, например, патчи
○ repositories - список репозиториев, по которым будут искаться пакеты и их зависимости
1.2.3 - точная версия
1.2.*|1.2.3 - версия 1.2.х, но не больше 1.2.3
~1.2.3 - от 1.2.3 до 1.3
^1.2.3 - от 1.2.3 до 2.0
Семантическое версионирование. MAJOR.MINOR.PATCH MAJOR - несовместимые изменения MINOR - добавление функциональности с обратной совместимостью PATCH - обратно совместимые багфиксы