我正在为ZF2开发模块,单个模块托管在自己的存储库空间中,这是我的结构
module
|__ User
|___ config
|___ src
|___ Module.php
|___ composer.json
|___ .git
__ Theme
|___ config
|___ src
|___ Module.php
|___ composer.json
|___ .git
User
模块托管于bitbucket.org/example/user
,Theme
托管于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中开发多个模块最好的是什么?
感谢。
答案 0 :(得分:1)
我认为这个问题在这里有很多答案:How to write a vendor programme/module for ZFT
基本上你不会把作曲家包放到modules
文件夹中,但让Composer将它们放到vendor
目录中。这将使模块依赖项的安装变得不必要,因为Composer会为主应用程序一次性解决所有依赖项。
编辑包主要是一个有用的问题 - 你可能会很高兴使用composer update --prefer-source
,它将git存储库克隆到文件夹中,你可以在那里使用它们。或者,您可以应用任何您想要的方法,例如使用符号链接等,如果您想在其他任何地方拥有这些存储库。 Composer不介意 - 如果它在路径中找到存储库,它将使用它。
但请注意,如果您在没有提交所有内容的情况下不小心运行更新,则可能会有危险。
此外,如果您忘记提交重要文件可能会出现问题 - 它可以在您的计算机上运行,因为该文件存在,但它不在存储库中,因此在其他任何地方都会丢失。