【发布时间】:2013-07-22 20:06:43
【问题描述】:
我正在尝试为 Symfony 开发一个可重用的捆绑包,但我被困住了,因为我不明白如何从捆绑包本身迁移一个包。
我发现这个非常有用的教程:
http://knpuniversity.com/screencast/question-answer-day/create-composer-package
但不幸的是,它仅在您已经完成库时才有用。
我想做的是能够,例如,在项目中创建一个新的 symfony 包,并定义该包具有的依赖项,假设在该包根目录下的 composer.json 文件中(而不是整个项目),并且当在我的项目的根目录中执行 composer update 时,它会自动处理捆绑包和项目其余部分的依赖项。
然后,当我看到该捆绑包功能齐全时,我当然会将其上传到 github 和 packagist,因此,该教程会很有用。
有人处理过这类问题吗?
提前非常感谢!
【问题讨论】:
-
我真的不明白您的问题:您可以在应用程序的
composer.json文件中定义应用程序的依赖项。您还将在每个捆绑包中找到相同的文件。 -
这个想法是:我的根项目中有一个 composer.json,然后在 MyProject/src/MyBundle 中,我还有一个应该用于在 MyProject/vendor 安装供应商的 composer.json .就像现在一样,我在一个包中定义了一个 composer.json,它不会自动安装该包所需的供应商。这就是我想要的。
-
@pmartelletti 您的主要
composer.json是否将您的捆绑包作为依赖项引用?如果没有,并且您只是将其添加到您的供应商目录,显然 Composer 不会知道为您加载传递依赖项。但是,如果您的捆绑包位于应用程序的composer.json中,则可以正常工作 -
现在,我的包在 src/ 目录下,所有包都默认在 symfony 中。我想要的是定义一个包列表,我的包需要这些包才能正常工作,并能够从根目录下的主 composer.json 文件中引用该 composer.json 文件(位于 src/mybundle 下) .这可能吗?
-
@pmartelletti 这不是您编写可重用包的方式。
src/下的捆绑包被视为特定于应用程序,因此使用应用程序的composer.json。他们没有自己的composer.json文件(真的毫无意义)。为了使用您的捆绑目录中的composer.json,捆绑本身必须是您的应用程序的composer.json所必需的(这意味着它将被加载到vendor目录中)。
标签: php symfony bundle composer-php