Hub*_*NNN 2 php symfony symfony-flex symfony4
我试图找到有关使用Symfony Flex的任何文档,但到目前为止还没有运气。
几乎所有文档都指向安装使用symfony Flex的捆绑软件,而不是如何创建使用它的捆绑软件。
我什至试图对某些软件包进行反向工程,但是再一次,没有运气。
我的目标是为中的捆绑包生成一个默认配置文件config/packages/my_bundle.yaml。
我需要知道的是我需要在哪里放置它以及可以使用哪些env变量(如果有)?
请记住,flex配方是与程序包存储库分开的存储库,需要托管在Flex服务器上。此过程使配方对于第三方捆绑包(IMO)的用处大大降低。对于“官方” Symfony食谱来说,它非常整洁,但对其他用户而言却不是那么多。
最有可能的是,您必须将配方提交到contrib存储库,使其获得批准和合并,以便将其作为社区配方使用。(另一种选择是拥有一台自托管的Flex服务器,但这仅在测试配方时有用,如有必要)。
另外,请务必记住,大多数用户默认不会启用contrib存储库。因此,如果这对于安装此软件包很重要,则应在安装配方之前告诉用户如何操作(例如,在软件包的自述文件中)。
这样就可以了:基本上,Flex配方是一个带有manifest.json文件的存储库,该文件带有用于启用某些“配置程序”的特定密钥。
可用的manifest.json配置器为:
应该在上启用哪些捆绑软件bundles.php。这些在安装配方时添加,在卸载配方时删除。
{
"bundles": {
"Symfony\\Bundle\\DebugBundle\\DebugBundle": ["dev", "test"],
"Symfony\\Bundle\\MonologBundle\\MonologBundle": ["all"]
}
}
Run Code Online (Sandbox Code Playgroud)
“配置”配置器处理两个键:copy-from-recipe和copy-from-package。第一个可以从配方存储库复制文件,第二个可以从软件包存储库复制文件。
{
"copy-from-package": {
"bin/check.php": "%BIN_DIR%/check.php"
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%/",
"src/": "%SRC_DIR%/"
}
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,一个文件bin/check.php在包将被复制到的项目%BIN_DIR%,与内容config和src对食谱包将被复制到的相应目录。
例如,这是提供默认配置文件的典型用例。根据您的要求,这是您要创建弹性配方的既定目的。
该配置器只是将适当的环境变量值添加到项目的.env和中.env.dist。(同样,如果您卸载了配方,这些将被删除)
{
"env": {
"APP_ENV": "dev",
"APP_DEBUG": "1"
}
}
Run Code Online (Sandbox Code Playgroud)
此配置器将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"
}
}
Run Code Online (Sandbox Code Playgroud)
在每一行指定了第二部分什么样它是命令的:常规PHP脚本(php-script),一个外壳脚本(script),或一个命令Symfony的(symfony-cmd通过执行bin/console)。
这会将条目添加到项目的.gitignore文件中。就那么简单。
{
"gitignore": [
"/phpunit.xml"
]
}
Run Code Online (Sandbox Code Playgroud)
的完整示例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/"
]
}
Run Code Online (Sandbox Code Playgroud)
有两个不依赖于manifest.json文件的配置器:
如果post-install.txt配方包中存在一个名为的文件,则在安装完成后会显示其内容。您甚至可以使用此处定义的样式来获得更多的美感/令人讨厌。
例:
{
"bundles": {
"Symfony\\Bundle\\DebugBundle\\DebugBundle": ["dev", "test"],
"Symfony\\Bundle\\MonologBundle\\MonologBundle": ["all"]
}
}
Run Code Online (Sandbox Code Playgroud)
安装完成后,这将显示给用户。
如果Makefile配方存储库中存在一个名为的文件,则此处定义的任务将添加到项目的Makefile中(如果不存在则创建Makefile)。
{
"copy-from-package": {
"bin/check.php": "%BIN_DIR%/check.php"
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%/",
"src/": "%SRC_DIR%/"
}
}
Run Code Online (Sandbox Code Playgroud)
就那么简单。我猜比大多数软件包都不需要makefile命令,因此它比其他配置程序的使用要少得多。
您可以在此处阅读完整的文档。