Symfony Flex: что это?

Symfony Flex: что это?

Можно было бы пытаться придумать какое-либо своё описание, но официальная документация довольно хороша. Поэтому здесь приведу выдержки, которые помогут понять что из себя представляет Symfony Flex и зачем он нужен.

Итак:

Symfony Flex - это новый способ установки и управления приложениями Symfony. Данный пакет заменяет Symfony Installer и Symfony Standard Edition. Flex автоматизирует самые общие задачи - установку и удаление бандлов, а также других зависимостей Composer. Пакет работает с Symfony 3.3 и выше, а начиная с 4-й версии используются по умолчанию, хотя это и не является обязательным требованием. 

Symfony Flex - это плагин Composer, который изменяет поведение команд require, update и remove. При установке или удалении зависимостей в приложении с поддержкой Flex, Symfony может выполнять некие задачи до и после выполнения задач Composer.

Возьмём следующую команду:

composer require orm-fixtures

 

Если попытаться выполнить эту команду в приложении, которое не использует Flex, получим ошибку Composer-а о том, что название пакета не валидно (поскольку используется алиас вместо полного названия). Однако, если установлен Flex, то и DoctrineFixturesBundle будет успешно установлен и интегрирован. В этом случае, когда Вы выполняете composer require, приложение сначала обращается на сервер Symfony Flex и:

  • если нет никакой информации об устанавливаемом пакете, Flex сервер ничего не возвращает и выполняются обычные процедуры Composer
  • если же есть информация о пакете, Flex возвращает файл называемый recipe (рецепт/инструкция) и приложение использует его для того, чтобы решить какой пакет установить и какие автоматические задачи запустить после инсталяции. Рецепты могут добавлять конфигурационные файлы, создавать директории, а также изменять некоторые файлы (например, .gitignore)

Flex записывает информацию об установленных пакетах в файл symfony.lock. Этот файл нужно добавить в ваш git-репозиторий.

Рецепты Symfony Flex предоставляются сообществом и хранятся в двух публичных репозиториях:

  • Главный репозиторий рецептов - представляет собой список официальных рецептов для поддерживаемых качественных пакетов. По умолчанию Flex смотрит только в этот репозиторий
  • Репозиторий рецептов Contrib - тут содержатся рецепты, созданные сообществом. Все они гарантированно работают, но связанные с ними пакеты могут не поддерживаться. Перед установкой любого из этих пакетов Symfony спросит вашего разрешения

И напоследок. Symfony опубликовал так называемый "skeleton" - минимальный проект, который рекомендуется для создания новых приложений. Этот "скелет" уже включает Flex в качестве зависимости. Другими словами, вы можете создать приложение Symfony с поддержкой Flex, выполнив команду:

composer create-project symfony/skeleton my-new-project

 

Официальная документация: Using Symmfony Flex to Manage Symfony Applications

Сервер рецептов: Symfony Recipes Server

Успехов!