Composer: Менее известные, но полезные команды

Composer — основной менеджер зависимостей для PHP, и если работаете с PHP, то уже знакомы с такими часто используемыми командами, как 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.

Дополнительные материалы

Предыдущая Статья

Генераторы статических сайтов (и какой из них выбрать)

Следующая Статья

Насколько строга ваша транспортная безопасность