Main > PHP > Composer: разница между require и require-dev

Composer: разница между require и require-dev

23.11.2019 0 comments » Views: 1,320

Composer

Сегодня, в очередной раз, мне поступил вопрос о том, в чем разница между секциями require и require-dev в файле composer.json, давайте разберемся..

Начнем с того, что разберемся с немного другими терминами, а именно режимами (средами) в которых работает программное обеспечение, чаще всего это:

  • Development (разговорный термин - "девелоп") - режим в котором над программным обеспечением работают разработчики делая ту или иную функциональность, чаще всего в этом режиме включен вывод пользователю разнообразных ошибок и разной отладочной информации.
  • Testing (разговорный термин - тестинг) - режим в котором тестировщики тестируют готовую функциональность. Вывод ошибок пользователю и отладочной информации чаще всего включен.
  • Staging (разговорный термин - стейдж или стейджинг) - режим в котором заказчик тестирует готовую функциональность, вывод ошибок пользователю отключен и перенаправлен в лог файлы. Все настройки максимально приближены к продакшену.
  • Production (разговорный термин - продакшн) - Режим в котором программное обеспечение используют реальные пользователи. Выводить ошибки и делать правки в этом режиме не рекомендуется.

Данные 4-е режима можно разделить еще на две группы

  • Development + Testing = показываем ошибки и отладочную информацию, ведем разработку ПО
  • Staging + Production = НЕ показываем ошибки и отладочную информацию, НЕ ведем разработку в этих режимах.
В продакшн

В продакшн

Теперь вернемся к Composer-у. Он поддерживает два типа зависимостей, список зависимостей для разработки (require-dev) и список зависимостей для продакшена (require). Например, во время разработки,  мы можем что-то тестировать с помощью PHP Unit и нам нужна такая зависимость, но когда все готово и протестировано, нам это зависимость не нужна и ее нет смысла тащить на продакшен сервер, т.к. по логике тестировать там что-то нельзя.

  • Staging + Production = зависимости нужные для работы в этом режиме помещаем в секцию require, файла composer.json
  • Development + Testing = зависимости которые нужны в этих режимах, но еще не включены в require, помещаем в секцию require-dev, файла composer.json

Пример из файла composer.json, проекта на фреймворке Yii2

То, что находится в секции require - это обязательные зависимости для всех режимов, а то, что в секции require-dev только для режима "разработки".

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

зависимости из обоих секций будут обработаны и установлены.

Для продакшен режима, мы используем опцию --no-dev, вот так

в этом случае, будут установлены только зависимости из раздела require.

Если просуммировать все, то секции

  • require = зависимости для всех режимов
  • require-dev = зависимости только для режима разработки

указывают какие зависимости будут утсановлены, когда вы запускаете команды

  • composer install = зависимости из require и require-dev
  • composer install --no-dev = зависимости только из require

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

Author: | Rating: 4/5 | Tags: , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>