Flex - Symfony

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

Список команд

КомандаОписание
composer recipesсписок всех установленных рецептов и тех, которые имеют обновления
composer recipes symfony/framework-bundleдетальная информации об указанном рецепте
composer recipes:install symfony/framework-bundle --force -vобновить указанный рецепт. Примечание: не выполняется никакого интеллектуального “обновления” вашего кода, вместо этого процесс обновления повторно устанавливает последнюю версию рецепта, что означает, что ваш код будет полностью переопределен. После обновления рецепта вам нужно тщательно выбрать, какие изменения вы хотите оставить/отменить.
composer recipes:updateобновить один из рецептов (команда покажет список рецептов и даст выбрать нужный)
composer recipes:update symfony/framework-bundleupdate a specific recipe
composer sync-recipes --forceбезоговорочно запустить все рецепты снова для всех пакетов
composer update symfony/flex --no-scripts --no-pluginsобновить Flex без каких-либо доп. действий

О том как написать свой рецепт, написано здесь.

Успехов!


12.03.2009 19:52