我创建了一个新的Symfony 3.1.2项目,在那里我开始开发一些新的捆绑包,我计划在未来重用。所以我的目录结构是这样的:
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
,它也会更新我的捆绑包的依赖项?
Y 使用作曲家的存储库找到了解决方案。
我将捆绑包移动到一个名为捆绑包(任意命名)的新文件夹中。这是必要的,因为 Symfony 默认自动加载 src
文件夹中的任何捆绑包,我不知道如果它们自动加载两次会发生什么(也许有人可以澄清这一点)。所以新的文件夹结构是
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
时,它会在项目的vendor
文件夹中(包括它们的依赖项)中添加此捆绑包(只要它们具有有效的composer.json
文件),并且它们会自动加载。
是使用符号链接添加的,因此我在捆绑包中所做的任何更改都会立即影响应用程序。有关更多信息,请查看作曲家的文档。