Что делает флаг —dev в Composer?

«Что делает флаг —dev в Composer?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Флаг --dev (или его отсутствие) в Composer управляет установкой зависимостей, указанных в разделе require-dev файла composer.json. Эти зависимости обычно включают инструменты для разработки и тестирования, которые не требуются в production-окружении.

Структура composer.json:

{
    "require": {
        "symfony/http-kernel": "^6.0",
        "doctrine/orm": "^2.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^9.0",
        "symfony/var-dumper": "^6.0",
        "roave/security-advisories": "dev-latest"
    }
}

Команды и их поведение:

  • composer install или composer install --dev — устанавливает ВСЕ зависимости, включая require-dev (поведение по умолчанию для локальной разработки).
  • composer install --no-dev — устанавливает ТОЛЬКО основные зависимости из require, игнорируя require-dev. Это используется на production-серверах для уменьшения размера vendor и ускорения autoload.
  • composer update --dev — обновляет только dev-зависимости.
  • composer update --no-dev — обновляет только основные зависимости.

Типичные dev-зависимости: инструменты тестирования (PHPUnit, Pest), статические анализаторы (PHPStan, Psalm), отладчики (Xdebug), фикстуры данных (Faker), и инструменты для код-стайла (PHP-CS-Fixer).