Что нового в Composer 2.4
Composer, де-факто менеджер зависимостей PHP привносит несколько новых функций в новом выпуске Composer 2.4
Итак, вышел новый релиз Composer 2.4. Релиз привнес новые команды, такие как audit и bump, поддержку завершения командной строки в поддерживаемых оболочках, предложения по установке пакета с флагом --dev , где это необходимо, улучшенную обработку сигналов процесса и многое другое.
Как и в предыдущей версии Composer 2.3, для Composer 2.4 также потребуется PHP 7.2. Приложениям, использующим более старые версии PHP, возможно, придется использовать Composer 2.2, который является версией с долгосрочной поддержкой, чтобы сначала облегчить переход на Composer 2.x.
Обновить Composer до Composer 2.4
composer self-update
Новая команда composer bump
bump - это новая команда в Composer 2.4, которая «бампит» ограничения версии пакета, перечисленные в файле composer.json, увеличивая их до последней версии в рамках разрешенных ограничений.
composer bump обновляет composer.json с новыми номерами версий, но только в пределах разрешенных основных/дополнительных/исправлений. Например, если для файла composer.json требуется пакет phpunit/phpunit с ограничением версии ^9.4, это означает, что Composer разрешено устанавливать phpunit/phpunit версии в диапазоне от >= 9.4.0 >= и < 10.
{
"require": {
- "phpunit/phpunit": "^9.4"
+ "phpunit/phpunit": "^9.5.20"
}
}
Команда composer bump не обновляет требования к платформе, такие как версия PHP и версий расширений.
Новая команда composer audit
Composer 2.4 добавляет новую команду composer audit, которая сканирует установленные пакеты на наличие известных уязвимостей безопасности.
Composer предлагает предупреждения о небезопасных версиях зависимостей из коробки как часть каждой команды composer update (можно отключить там, где это не имеет значения с помощью --no-audit)
По умолчанию аудит install отключен для повышения производительности, потому что большинство установок запускаются автоматически, никто не просматривает их выходные данные, но ее также можно включить и настроить с помощью флага --audit:
composer install --audit --audit-format=plain
Поддержка завершения команд, пакета и опции bash
Очень крутая функция, хоть и потребует нескольких шагов ручной настройки, но это того стоит! То есть теперь при нажатии на табуляцию Composer завершит ввод команд, параметров и даже имен пакетов. Внутренне завершение Composer зависит от библиотеки Symfony Console. На данный момент поддержка ограничена Bash.
Чтобы настроить завершение Composer, запустите composer completion без параметров. На поддерживаемых платформах Composer выведет скрипт завершения, который следует поместить в каталог, в который оболочка загружает сценарии завершения. Для этой установки также требуется установленный пакет bash-complete.
sudo apt install bash-completion
composer completion | sudo tee /etc/bash_completion.d/composer | exec bash
Предлагает установить пакеты с --dev
При попытке установить пакет, помеченный как dev, testing или static analysis без флага --dev Composer 2.4 предложит пользователю вместо этого установить пакет как зависимость require-dev:
Это полезно для предотвращения случайной установки тестовых фреймворков, статических анализаторов, инструментов контроля качества кода и т.д. в качестве продакшн зависимостей.
Улучшение команды composer outdated
Команда command outdated выводит список устаревших пакетов из установленных в настоящее время, была обновлена в Composer 2.4. Теперь Composer отображает прямые и транзитивные зависимости отдельно:
Кроме того, composer outdated теперь поддерживает флаг --major-only, в котором перечислены только пакеты с устаревшей основной версией. Composer уже поддерживает опции --patch-only и --minor-only для фильтрации устаревших версий по исправлениям и второстепенным версиям.
Также было добавлено множество мелких улучшений, например улучшенная обработка сигналов:
- ранее когда Composer получал сигнал SIGINT/SIGTERM/SIGHUP (например SIGINT, когда пользователь нажимает ^C), Composer ожидал завершения всех запущенных внешних процессов. Composer 2.4 может отобразить полный вывод процессов перед завершением.
- composer dump-autoload теперь поддерживает --strict-psr - обнаружение и сбой при наличии файлов, не соответствующих соглашению об именах PSR-0/PSR-4.
- composer добавлен как псевдоним для composer require.
- Composer\Autoload\ClassMapGenerator устарел в пользу нового пакета composer/class-map-generator.
Что думаешь?