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.