Symfony Flex является рекомендуемой зависимостью современных приложений Symfony, которая повышает скорость разработки за счет автоматизации повторяющихся и скучных задач, таких как установка и автоматическая настройка пакетов и других библиотек.
Symfony Flex 1.2 был выпущен с некоторыми полезными новыми функциями!
Упрощенное обновление рецептов
Рецепты Symfony определяют инструкции, используемые Symfony Flex для установки и настройки зависимостей в ваших приложениях. Разработчики Symfony постоянно обновляют рецепты, чтобы включить новые функции, представленные библиотеками, или новую конфигурацию для лучшей работы. Вам не нужно применять эти обновленные рецепты к вашему приложению. Но их применение иногда может показать вам новые функции, которые вы, возможно, захотите использовать в своих приложениях.
В Symfony Flex уже есть команда sync-recipes
для установки или переустановки рецептов для пакетов, установленных в приложении. Однако эта команда не выполняет рецепт снова, если рецепт уже был выполнен. Итак, обновленная версия рецепта никогда не применяется к существующим приложениям.
Symfony Flex 1.2 представляет новую опцию --force
для синхронизации рецептов, чтобы безоговорочно запускать все рецепты снова для всех пакетов. На практике это означает, что Symfony выполнит последний рецепт, но вы потеряете все сделанные вами изменения в файлах, затронутых рецептами. Решением является проверка изменений с помощью git diff и применение / отклонение каждого изменения рецепта:
composer sync-recipes --force Symfony operations: 10 recipes (8967ada4e2fe4a57735c35d43dd14035) - Configuring symfony/flex: From github.com/symfony/recipes:master - Configuring symfony/framework-bundle: From github.com/symfony/recipes:master - Configuring doctrine/doctrine-bundle: From github.com/symfony/recipes:master - ... * Use git diff to inspect the changes. Not all of the changes will be relevant to your app: you now need to selectively add or revert them using e.g. a combination of git add -p and git checkout -p * Use git checkout . to revert the changes. New (untracked) files can be inspected using git clean --dry-run Add the new files you want to keep using git add then delete the rest using git clean --force
Улучшена обработка файлов .env
Если вы создали приложение Symfony после декабря 2018 года или недавно обновили рецепты с помощью sync-recipes --force
, вы увидите важные изменения, связанные с файлами конфигурации .env *.
Эти файлы теперь всегда загружаются, даже если вы установите переменную окружения APP_ENV = prod
. Цель состоит в том, чтобы файл .env определял значения по умолчанию, которые можно переопределить реальными значениями среды или создав файл .env.local.
Если вы не хотите разбирать файлы .env * при каждом запросе, Symfony Flex 1.2 включает новую команду dump-env
, которая компилирует содержимое файлов .env * в PHP-оптимизированный файл с именем .env.local.php:
composer dump-env prod Successfully dumped .env files in .env.local.php
Затем этот файл автоматически читается файлом config/bootstrap.php. И хотя эта команда необязательна, но это может быть полезным во время развертывания на прод, чтобы повысить производительность приложения (так же, как вы делаете это с другими командами, такими как composer dump-autoload -o
).
Другие улучшения
Автоматическая установка нескольких пакетов
В настоящее время любой пакет с типом symfony-bundle в его файле composer.json включается как пакет Symfony при его установке, даже если для него не определен рецепт Symfony Flex.
В Symfony Flex 1.2 теперь включены все пакеты, найденные в конфигурации автозагрузки файла composer.json, а не только первый.
Противоречивые рецепты
Теперь рецепты могут включать в свои манифесты ключ конфликта, чтобы определить пакеты и версии, которые не совместимы с ним. Если при установке рецепта обнаруживается конфликт, Symfony Flex отображает сообщение о том, что установка рецепта была пропущена, и причина этого:
{
"...": "...",
"conflict": {
"symfony/messenger": "^4.2",
"symfony/console": "<3.*"
}
}