我创建了一个新的Symfony 3.1.2项目,我开始开发一些我打算在将来重用的新Bundles。所以我的目录结构是这样的:
app/
bin/
src/
AppBundle/
MyVendorName/
CoolBundle/
Controller/
composer.json
...other files and folders...
AwesomeBundle/
Controller/
composer.json
...other files and folders...
test/
var/
web/
composer.json
...other files...
CoolBundle
和AwesomeBundle
都依赖于第三方库(在每个composer.json
上定义)。
现在,有没有办法可以在项目上调用composer update
,它还会更新我的捆绑包的依赖项?
答案 0 :(得分:1)
Y找到了使用作曲家存储库的解决方案。
我将捆绑包移动到名为bundles(名为arbitary)的新文件夹中。这是必要的,因为Symfony默认自动加载src
文件夹中的任何Bundle,并且我不知道如果它们被自动加载两次会发生什么(也许有人可以澄清这一点)。所以新的文件夹结构是
app/
bin/
src/
AppBundle/
bundles/
MyVendorName/
CoolBundle/
Controller/
composer.json
...other files and folders...
AwesomeBundle/
Controller/
composer.json
...other files and folders...
test/
var/
web/
composer.json
...other files...
然后在我的应用的composer.json
文件(底部的那个)中我添加了
...,
"repositories": [
{
"type": "path",
"url": "bundles/MyVendorName/*"
}
],
"require": {
"php": ">=5.5.9",
"symfony/symfony": "3.1.*",
"myvendorname/coolbundle": "@dev",
"myvendorname/awesomebundle": "@dev",
},
...
现在,当我运行composer update
时,它会在我的项目的composer.json
文件夹中添加这些包(只要它们有一个有效的vendor
文件),包括它们的依赖项,并且它们是自动加载的
使用符号链接添加本地捆绑包,因此我在捆绑包中所做的任何更改都会影响应用程序。有关详细信息,请查看composer's documentation。