Что такое рецепт Flex?
Имейте в виду, что рецепт flex представляет собой отдельный репозиторий от вашего репозитория пакетов, который необходимо разместить на сервере Flex. Процесс создания рецептов гораздо менее полезен для сторонних комплектов, IMO. Это очень удобно для «официальных» рецептов Symfony, но не так много для других пользователей.
Скорее всего, вам придется отправить свой рецепт в репозиторий contrib , получить его одобрение иобъединены, так что это доступно как рецепт сообщества. (Другим вариантом будет иметь самосмещенный сервер Flex , но это полезно только при тестировании рецепта, если необходимо).
Кроме того, важно помнить, что большинство пользователей не будет иметь репозиторий contrib по умолчанию . Поэтому, если это важно для установки этого комплекта, вы должны сообщить своим пользователям, как это сделать, прежде чем они установят ваш рецепт (например, в файле readme вашего комплекта).
С этим вне пути: в основном, рецепт Flex - это хранилище с файлом manifest.json
с конкретными ключами для включения определенных «конфигураторов».
Доступные manifest.json
конфигураторы:
Пакеты
Какие пакеты должны быть включены на bundles.php
. Они добавляются, когда рецепт установлен, и удаляются, когда рецепт удаляется.
{
"bundles": {
"Symfony\\Bundle\\DebugBundle\\DebugBundle": ["dev", "test"],
"Symfony\\Bundle\\MonologBundle\\MonologBundle": ["all"]
}
}
Конфигурация
Конфигуратор «конфигурации» имеет дело с двумя ключами: copy-from-recipe
и copy-from-package
,Первый может копировать файлы из репозитория recipe , второй копирует файлы из репозитория package .
{
"copy-from-package": {
"bin/check.php": "%BIN_DIR%/check.php"
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%/",
"src/": "%SRC_DIR%/"
}
}
В этом примере файл bin/check.php
в пакете будет скопировано в проекты %BIN_DIR%
, а содержимое config
и src
в пакете рецептов будет скопировано в соответствующий каталог.
Этонапример, типичный вариант использования для предоставления файлов конфигурации по умолчанию. Исходя из того, что вы спрашиваете, это ваша заявленная цель для создания гибкого рецепта.
Env Vars
Этот конфигуратор просто добавляет соответствующие значения переменных среды в .env
и * 1057 проекта*. (Опять же, они будут удалены, если вы удалите рецепт)
{
"env": {
"APP_ENV": "dev",
"APP_DEBUG": "1"
}
}
Сценарии Composer
Этот конфигуратор добавляет задачи в массив scrits:auto-scripts
из composer.json
проекта. auto-scripts
- это задачи, которые выполняются каждый раз, когда composer update
или composer install
выполняются в проекте.
{
"composer-scripts": {
"vendor/bin/security-checker security:check": "php-script",
"make cache-warmup": "script",
"assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd"
}
}
Вторая часть в каждой строке указывает, что вид командыэто: обычный PHP-скрипт (php-script
), сценарий оболочки (script
) или команда Symfony (symfony-cmd
, выполняемая через bin/console
).
Gitignore
Это добавит записи в файл .gitignore
проекта. Все просто.
{
"gitignore": [
"/phpunit.xml"
]
}
Полный пример manifest.json
(взято отсюда, как и большинство других примеров в этом посте):
{
"bundles": {
"Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle": ["all"]
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%/",
"public/": "%PUBLIC_DIR%/",
"src/": "%SRC_DIR%/"
},
"composer-scripts": {
"make cache-warmup": "script",
"assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd"
},
"env": {
"APP_ENV": "dev",
"APP_DEBUG": "1",
"APP_SECRET": "%generate(secret)%"
},
"gitignore": [
".env",
"/public/bundles/",
"/var/",
"/vendor/"
]
}
Дополнительные конфигураторы
Существует два конфигуратора, которые не полагаются на файл manifest.json
:
Вывод после установки.
Если в пакете рецепта существует файл с именем post-install.txt
, его содержимоеотображается после завершения установки. Вы можете даже использовать стили , как определено здесь , для дополнительной красивости / отвратительности.
Пример:
<bg=green;fg=white> </>
<bg=green;fg=white> Much success!! </>
<bg=green;fg=white> </>
* <fg=yellow>Next steps:</>
1. Foo
2. <comment>bar</>;
3. Baz <comment>https://example.com/</>.
Это будет представлено пользователю после завершения установки.
Makefile
Если в репозитории рецепта существует файл с именем Makefile
, определенные здесь задачи будут добавлены в Makefile проекта (создающий Makefile, если он не существует).
cache-clear:
@test -f bin/console && bin/console cache:clear --no-warmup || rm -rf var/cache/*
.PHONY: cache-clear
Все просто. Я полагаю, что большинству пакетов не понадобится команда makefile, поэтому она будет гораздо менее полезна, чем другие конфигураторы.
Вы можете прочитать полную документацию здесь .