← Назад к вопросам

Как установить пакет dev в require?

1.0 Junior🔥 241 комментариев
#Composer и PSR

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Установка пакета как dev-зависимости в Composer

Основной подход

В Composer пакеты устанавливаются в секцию require-dev с помощью флага --dev:

composer require --dev vendor/package-name

Например, для установки PHPUnit как dev-зависимости:

composer require --dev phpunit/phpunit

Структура файла composer.json после установки

После выполнения команды ваш composer.json будет выглядеть примерно так:

{
    "require": {
        "vendor/production-package": "^1.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^9.0"
    }
}

Разница между require и require-dev

Ключевое различие:

  • require - пакеты, необходимые для работы приложения в production
  • require-dev - пакеты, нужные только для разработки и тестирования

Примеры dev-зависимостей:

  • Инструменты тестирования (PHPUnit, PestPHP)
  • Инструменты статического анализа (PHPStan, Psalm)
  • Фреймворки для тестирования (Mockery, Prophecy)
  • Инструменты для код-ревью (PHP CS Fixer, PHP_CodeSniffer)
  • Генераторы документации (PHPDocumentor)
  • Инструменты для фикстур (FakerPHP)

Управление установкой в разных окружениях

Установка только production-зависимостей:

composer install --no-dev

Это используется на production-серверах для уменьшения размера зависимостей и улучшения безопасности.

Обновление dev-зависимостей:

composer update --dev

Альтернативные способы добавления пакетов в require-dev

1. Ручное редактирование composer.json: Добавьте пакет в секцию require-dev и выполните:

composer update vendor/package-name

2. Перемещение существующего пакета из require в require-dev:

composer remove vendor/package-name
composer require --dev vendor/package-name

Особенности работы с флагами

Для предотвращения случайной установки пакета в require:

# Явное указание, даже если флаг кажется избыточным
composer require --dev vendor/package-name --no-update

Просмотр установленных dev-зависимостей:

composer show --dev-only

Конфигурация окружений

В проекте можно настроить переменные окружения для автоматического управления зависимостями. Рекомендуется добавить в корень проекта файл .env с настройками:

COMPOSER_DEV_MODE=true

Автоматизация с помощью скриптов

Добавьте в composer.json скрипты для удобства:

{
    "scripts": {
        "install-dev": "composer install",
        "install-prod": "composer install --no-dev --optimize-autoloader",
        "check-dev-deps": "composer show --dev-only --format=json"
    }
}

Best Practices

  1. Всегда используйте --dev для инструментов, не требующихся в production
  2. Регулярно проверяйте dev-зависимости на актуальность
  3. Документируйте в README.md, какие dev-пакеты используются и для чего
  4. Настройте CI/CD для установки зависимостей в зависимости от этапа пайплайна
  5. Используйте composer audit для проверки безопасности зависимостей

Пример реального сценария

# Устанавливаем инструменты для разработки
composer require --dev phpunit/phpunit
composer require --dev nunomaduro/phpinsights
composer require --dev friendsofphp/php-cs-fixer

# Production-зависимости устанавливаются без флага --dev
composer require laravel/framework

# На production-сервере устанавливаем только необходимое
composer install --no-dev --optimize-autoloader

Этот подход позволяет содержать production-окружение чистым и безопасным, предоставляя разработчикам все необходимые инструменты для работы.

Как установить пакет dev в require? | PrepBro