我正在为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中开发多个模块的最佳方法是什么?
谢谢。
我认为这个问题已经有很多答案了:如何为ZFT 编写供应商程序/模块
基本上,您不会将composer包放入modules
文件夹,而是让composer将它们放入vendor
目录。这将使模块依赖项的安装变得不必要,因为Composer将一次性处理主应用程序的所有依赖项。
编辑软件包主要是一个问题,即什么效果好——使用composer update --prefer-source
可能会很高兴,它会将git存储库克隆到文件夹中,并且您可以在那里使用它们。或者,如果你想在其他地方拥有这些存储库,你可以应用任何你想要的方法,比如使用符号链接等。Composer不会介意——如果它在路径中找到了存储库,它就会使用它
但是请注意,如果您不小心在没有提交所有内容的情况下运行更新,可能会很危险。
此外,如果你忘记提交一个重要的文件,这可能会成为一个问题——它会在你的机器上工作,因为文件在那里,但它不在存储库中,所以其他地方都会错过它。