Composer更新我的Bundles依赖项

时间:2016-07-15 21:43:11

标签: composer-php symfony

我创建了一个新的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...

CoolBundleAwesomeBundle都依赖于第三方库(在每个composer.json上定义)。

现在,有没有办法可以在项目上调用composer update,它还会更新我的捆绑包的依赖项?

1 个答案:

答案 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