ZF2模块开发 - 使用GIT和Composer进行主机

时间:2015-04-13 17:37:18

标签: git zend-framework2 composer-php bitbucket

我正在为ZF2开发模块,单个模块托管在自己的存储库空间中,这是我的结构

module
|__ User
    |___ config
    |___ src
    |___ Module.php
    |___ composer.json
    |___ .git
__ Theme
    |___ config
    |___ src
    |___ Module.php
    |___ composer.json
    |___ .git

User模块托管于bitbucket.org/example/userTheme托管于bitbucket.org/example/theme,依此类推。

当我使用DoctrineORMModule包含依赖项时,用户模块与composer.json具有依赖关系。它在模块中创建供应商目录并安装文件,这是在composer中添加依赖项之后的目录结构。用户模块的json。

module
|__ User
    |___ config
    |___ src
    |___ vendor
    |___ Module.php
    |___ composer.json
    |___ .git
__ Theme
    |___ config
    |___ src
    |___ Module.php
    |___ composer.json
    |___ .git

如果您注意到它在用户模块中添加了供应商目录,那么采用这种方法进行开发是正常的吗?我期待依赖模块在根供应商目录中而不是在模块目录中安装/复制,这种方法的问题在于我不希望供应商在模块目录中,这样如果我有共享依赖,它将复制在多个目录?在ZF2中开发多个模块最好的是什么?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为这个问题在这里有很多答案:How to write a vendor programme/module for ZFT

基本上你不会把作曲家包放到modules文件夹中,但让Composer将它们放到vendor目录中。这将使模块依赖项的安装变得不必要,因为Composer会为主应用程序一次性解决所有依赖项。

编辑包主要是一个有用的问题 - 你可能会很高兴使用composer update --prefer-source,它将git存储库克隆到文件夹中,你可以在那里使用它们。或者,您可以应用任何您想要的方法,例如使用符号链接等,如果您想在其他任何地方拥有这些存储库。 Composer不介意 - 如果它在路径中找到存储库,它将使用它。

但请注意,如果您在没有提交所有内容的情况下不小心运行更新,则可能会有危险。

此外,如果您忘记提交重要文件可能会出现问题 - 它可以在您的计算机上运行,​​因为该文件存在,但它不在存储库中,因此在其他任何地方都会丢失。