Composer: Менее известные, но полезные команды
composer install
и composer update
. Composer также предоставляет несколько менее известных, но полезных при работе над приложениями в PHP, команд.composer outdated
Вы когда-нибудь задумывались, какие из зависимостей вашего приложения устарели? composer outdated
позволяет быстро получить информацию обо всех пакетах, для которых доступны более новые версии. По сути, это псевдоним команды composer show -lo
. Это чрезвычайно удобно для поддержания проекта в актуальном и безопасном состоянии.
composer outdated
Она выводит список всех устаревших пакетов в проекте, показывая текущие и последние версии. Это удобный способ следить за обновлениями, не запуская вслепую composer update
.
Цветовое кодирование выглядит следующим образом:
- зелёный (=): Зависимость находится в последней версии и является актуальной.
- жёлтый (~): Зависимость имеет новую версию, в которой есть нарушения обратной совместимости, согласно semver, поэтому обновите её, когда сможете, но это может потребовать работы.
- красный (!): Зависимость имеет новую версию, совместимую с semver, и вам следует обновить её.
Опции команды composer outdated
--all
(-a
): Показывает все пакеты, а не только устаревшие (псевдоним дляcomposer show --latest
).--direct
(-D
): Ограничивает список пакетов вашими прямыми зависимостями.--strict
: Возвращает ненулевой код выхода, если какой-либо пакет является устаревшим.--ignore
: Игнорировать указанный пакет(ы). Может содержать подстановочные знаки (*
). Используйте его, если вы не хотите получать информацию о новых версиях некоторых пакетов--major-only
(-M
): Показывает только те пакеты, которые имеют основные SemVer-совместимые обновления.--minor-only
(-m
): Показывает только те пакеты, которые имеют минорные SemVer-совместимые обновления.--patch-only
(-p
): Показывает только те пакеты, которые имеют SemVer-совместимые обновления на уровне патчей.--sort-by-age
(-A
): Отображает возраст установленной версии и сортирует пакеты по возрасту.--format
(-f
): Позволяет выбрать формат вывода:text
(по умолчанию) илиjson
.--no-dev
: Не показывать устаревшие dev-зависимости.--locked
: Показывает обновления для пакетов из файла блокировки, независимо от того, что в данный момент находится в каталогеvendor
.--ignore-platform-reqs
: игнорировать все требования к платформе (php
,hhvm
,lib-*
иext-*
) и принудительно устанавливать, даже если локальная машина их не выполняет.--ignore-platform-req
: игнорировать конкретные требования к платформе (php
,hhvm
,lib-*
иext-*
) и принудительно установить, даже если локальная машина им не соответствует. С помощью подстановочного знака можно игнорировать несколько требований.
composer show
Нужен обзор установленных пакетов? composer show
выводит информацию обо всех пакетах, установленных в проекте.
composer show
Чтобы отфильтровать список, можно передать маску пакета, используя подстановочные знаки.
composer show "monolog/*"
monolog/monolog 2.4.0 Sends your logs to files, sockets, inboxes, databases and various web services
Его также можно использовать для получения подробной информации о конкретном пакете, передав имя пакета:
composer show vendor/package
# Example: composer show backpack/crud
Это отличный способ быстро просмотреть установленную версию, описание и зависимости любого пакета в проекте.
Опции команды composer show
--all
: Выводит список всех пакетов, доступных во всех ваших репозиториях.--installed
(-i
): Выводит список установленных пакетов (по умолчанию включено, но устарело).--locked
: Выводит список заблокированных пакетов изcomposer.lock
.--platform
(-p
): Выводит список только пакетов платформы (php и расширения).--available
(-a
): Выводит список только доступных пакетов.--self
(-s
): Выводит информацию о корневом пакете.--name-only
(-N
): Выводит только имена пакетов.--path
(-P
): Выводит список путей к пакетам.--tree
(-t
): Выводит список зависимостей в виде дерева. Если передадите имя пакета, то будет показано дерево зависимостей для этого пакета.--latest
(-l
): Выводит список всех установленных пакетов, включая их последнюю версию.--outdated
(-o
): Аналогично--latest
, но в этом случае перечисляются только те пакеты, для которых доступна более новая версия.--ignore
: Игнорировать указанный пакет(ы). Может содержать подстановочные знаки (*
). Используйте вместе с опцией--outdated
, если не хотите получать информацию о новых версиях некоторых пакетов.--no-dev
: Фильтрует dev-зависимости из списка пакетов.--major-only
(-M
): Используйте вместе с--latest
или--outdated
. Показывает только те пакеты, которые имеют основные обновления, совместимые с SemVer.--minor-only
(-m
): Используйте с--latest
или--outdated
. Показывает только пакеты с минорными SemVer-совместимыми обновлениями.--patch-only
: Используйте с--latest
или--outdated
. Показывает только пакеты, имеющие обновления SemVer-совместимости на уровне патча.--sort-by-age
(-A
): Отображает возраст установленной версии и сортирует пакеты по возрасту. Используйте с опцией--latest
или--outdated
.--direct
(-D
): Ограничивает список пакетов вашими прямыми зависимостями.--strict
: Возвращает ненулевой код выхода при наличии устаревших пакетов.--format
(-f
): Позволяет выбрать формат вывода:text
(по умолчанию) илиjson
.--ignore-platform-reqs
: Игнорировать все требования к платформе (php
,hhvm
,lib-*
иext-*
) и принудительно устанавливать, даже если локальная машина им не удовлетворяет. Используйте с опцией--outdated
.--ignore-platform-req
: Игнорировать конкретное требование к платформе (php
,hhvm
,lib-*
иext-*
) и принудительно установить, даже если локальная машина ему не соответствует. Можно игнорировать несколько требований с помощью подстановочного знака. Используйте с опцией--outdated
.
composer why
Хотите выяснить, зачем установлен тот или иной пакет? composer why
поможет проследить дерево зависимостей, чтобы понять, какой пакет его требует. Команда why
псевдоним команды depends
composer why vendor/package
Добавьте флаг --tree
или -t
, чтобы, показать рекурсивное дерево причин зависимости пакета:
composer why psr/log -t
psr/log 1.1.4 Common interface for logging libraries
├──composer/composer 2.4.x-dev (requires psr/log ^1.0 || ^2.0 || ^3.0)
├──composer/composer dev-main (requires psr/log ^1.0 || ^2.0 || ^3.0)
├──composer/xdebug-handler 3.0.3 (requires psr/log ^1 || ^2 || ^3)
│ ├──composer/composer 2.4.x-dev (requires composer/xdebug-handler ^2.0.2 || ^3.0.3)
│ └──composer/composer dev-main (requires composer/xdebug-handler ^2.0.2 || ^3.0.3)
└──symfony/console v5.4.11 (conflicts psr/log >=3) (circular dependency aborted here)
Опции команды composer why
--recursive
(-r
): Рекурсивно разрешает зависимости до корневого пакета.--tree
(-t
): Выводит результаты в виде вложенного дерева, подразумевает-r
.
composer licenses
Хотите узнать лицензии используемых пакетов? composer licenses
предоставляет сводную информацию о лицензиях всех установленных зависимостей. Это пригодится для обеспечения соответствия лицензиям открытых исходных кодов.
composer licenses
Используйте --format=json
, чтобы получить машиночитаемый вывод.
Опции команды composer licenses
--format
(-f
): Формат вывода:text
(по умолчанию),json
илиsummary
--no-dev
: Удаляет dev-зависимости из вывода
composer check-platform-reqs
Проверка установки всех необходимых PHP-расширений может доставить немало хлопот при работе над проектом в нескольких средах. Команда composer check-platform-reqs
проверяет, соответствует ли ваша платформа требованиям пакета.
composer check-platform-reqs
Эта команда проверяет, что версия PHP и все необходимые расширения установлены и соответствуют ограничениям версии, указанным в файле composer.json
.
В отличие от update
/install
, эта команда игнорирует настройки config.platform
и проверяет реальные пакеты платформы, так что можете быть уверены, что у вас есть необходимые зависимости платформы.
Опции команды composer check-platform-reqs
--lock
: Проверяет требования только из файла блокировки, а не из установленных пакетов.--no-dev
: отключает проверку требований пакетов require-dev.--format
(-f
): Формат вывода:text
(по умолчанию) илиjson
Заключение
Несмотря на то, что основные команды Composer справляются со своей задачей, эти менее известные команды могут сэкономить время и избавить от лишних хлопот, предоставив более глубокое понимание и больший контроль над зависимостями проекта. Так что в следующий раз, когда откроете терминал, попробуйте эти команды и посмотрите, как они могут улучшить ваш опыт работы с PHP.