В composer.json чем отличаются require и require-dev
В файле `composer.json` секции `require` и `require-dev` используются для определения зависимостей вашего проекта, но у них разные назначения.
`require`
Содержит список пакетов, которые необходимы для работы вашего приложения в любой среде. Эти зависимости требуются для выполнения основного функционала приложения, и они будут установлены независимо от того, в какой среде (разработка, тестирование, продуктив) вы находитесь.
```json
{
"require": {
"monolog/monolog": "^2.0",
"guzzlehttp/guzzle": "^7.0"
}
}
```
В этом примере указаны две зависимости, необходимые для работы приложения:
- `monolog/monolog`: библиотека для логирования.
- `guzzlehttp/guzzle`: HTTP-клиент.
Эти библиотеки будут установлены при запуске команды `composer install` как в среде разработки, так и в продуктивной среде.
`require-dev`
Содержит список пакетов, которые необходимы только для разработки и тестирования приложения. Эти зависимости включают в себя инструменты тестирования, отладки и другие пакеты, которые не требуются в продуктивной среде.
```json
{
"require-dev": {
"phpunit/phpunit": "^9.0",
"friendsofphp/php-cs-fixer": "^2.0"
}
}
```
В этом примере указаны две зависимости, необходимые только для разработки:
- `phpunit/phpunit`: библиотека для написания и выполнения тестов.
- `friendsofphp/php-cs-fixer`: инструмент для автоматического форматирования кода.
Эти библиотеки будут установлены только при запуске команды `composer install` с флагом `--dev` или `composer install` в среде разработки, но не будут установлены в продуктивной среде, если команда `composer install` выполняется с флагом `--no-dev`.
Основные отличия:
1. Назначение:
- require: Зависимости, необходимые для работы приложения в любой среде.
- require-dev: Зависимости, необходимые только для разработки и тестирования.
2. Установка:
- require: Устанавливаются всегда при выполнении команды `composer install`.
- require-dev: Устанавливаются только при выполнении команды `composer install` без флага `--no-dev`.
3. Использование в продакшн среде:
- require: Всегда устанавливаются в продакшн среде.
- require-dev: Не устанавливаются в продакшн среде, если используется флаг `--no-dev`.
```json
{
"name": "myproject",
"description": "A simple project.",
"authors": [
{
"name": "John Doe",
"email": "john.doe@example.com"
}
],
"require": {
"monolog/monolog": "^2.0",
"guzzlehttp/guzzle": "^7.0"
},
"require-dev": {
"phpunit/phpunit": "^9.0",
"friendsofphp/php-cs-fixer": "^2.0"
}
}
```
Команды Composer:
- Установка всех зависимостей:
```sh
composer install
```
Эта команда установит все зависимости из секций `require` и `require-dev`.
- Установка только продакшн зависимостей:
```sh
composer install --no-dev
```
Эта команда установит только зависимости из секции `require`.
Если объяснить совсем просто: `require` — это обязательные библиотеки для работы приложения, а `require-dev` — это дополнительные библиотеки, нужные только разработчикам для работы и тестирования.
June 1, 2024, easyoffer