Composer: Заставить установку пакета как require-dev
Когда вышел Composer 2.4, там была добавлена одна интересная функция, при которой команда composer require предлагает установить пакет с --dev флагом, если устанавливаемый пакет предназначен для использования в качестве инструмента разработчика.
При передаче флага --dev пакет устанавливается в раздел require-dev composer.json файла, а другие команды Composer (такие как composer update, install, dump-autoload и т. д.) могут при необходимости пропускать зависимости require-dev.
При попытке установить PHPUnit Composer автоматически предлагает установить его с флагом --dev.
Как это работает, Composer проверяет раздел keywords в файле composer.json и, если он содержит ключевые слова dev, testing, или static analysis, то Composer предлагает пользователю установить его с флагом --dev, если он не был передан.
В предложении указывается причина, по которой пакет был определен как зависимость от разработчика:
The package you required is recommended to be placed in require-dev (because it is tagged as "testing") but you did not use --dev.
Но стоит заметить, что данная функция не будет работать, если Composer запускается в неинтерактивной среде (например, при сборке CI или при передаче флага --no-interaction).
Как сделать флаг приглашения --dev Composer в ваших пакетах
Если вы публикуете пакет разработчика (например, инструменты тестирования, инструменты фиксации данных, инструменты отладки и т. д.), вы можете использовать эту функцию, чтобы Composer в интерактивном режиме предлагал пользователю установить их в разделе require-dev на случай, если пользователь забудет использовать флаг --dev.
Для этого добавьте одно из следующих ключевых слов в раздел keywords файла composer.json:
dev
testing
static analysis
для примера:
"name": "name/your-dev-package",
"keywords": ["dev"],
"type": "library",
Ключевое слово должно присутствовать только в ветке по умолчанию, а не обязательно во всех ветках и тегах.
Что думаешь?