Как добавить пакет как dev-зависимость в Composer?

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

Ответ

Dev-зависимости (development dependencies) — это пакеты, необходимые только во время разработки, тестирования или сборки проекта, но не в production-окружении. В Composer они управляются отдельно от основных зависимостей.

Способы добавления:

  1. Через командную строку (рекомендуется): Использование флага --dev (или его алиаса -D) с командой require.

    composer require --dev phpunit/phpunit
    # Или короче
    composer require -D phpstan/phpstan

    Эта команда автоматически добавит пакет в секцию require-dev файла composer.json и установит его.

  2. Ручное редактирование composer.json: Можно напрямую добавить пакет в соответствующую секцию.

    {
        "require": {
            "laravel/framework": "^10.0"
        },
        "require-dev": {
            "fakerphp/faker": "^1.9",
            "mockery/mockery": "^1.4",
            "nunomaduro/collision": "^7.0"
        }
    }

    После редактирования файла нужно выполнить composer update для установки/обновления зависимостей согласно новому composer.json.

Типичные примеры dev-зависимостей:

  • Фреймворки для тестирования: PHPUnit, Pest, Codeception.
  • Инструменты статического анализа: PHPStan, Psalm, Phan.
  • Инструменты стиля кода: PHP_CodeSniffer, PHP-CS-Fixer.
  • Генераторы данных: Faker.
  • Инструменты для моков: Mockery, Prophecy.
  • Локальные серверы/утилиты: Symfony CLI, Laravel Valet (частично).

Ключевое поведение: При установке зависимощей с флагом --no-dev (что является стандартной практикой для production-развертывания) все пакеты из require-dev игнорируются. Это уменьшает размер развертываемого кода, ускоряет установку и снижает потенциальную поверхность атаки.

# Production-установка (без dev-пакетов)
composer install --no-dev --optimize-autoloader

# Установка для разработки (со всеми пакетами)
composer install