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

ZF2 Modules Development - Host using GIT and Composer

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

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

如果你注意到它在用户模块中添加了vendor目录,用这种方式开发是正常的吗?我期望依赖模块在根供应商目录中而不是在模块目录中,这种方法对我来说的问题是我不希望供应商在模块目录中,这样如果我有共享依赖它会在多个目录中复制吗?在 ZF2 中开发多个模块的好处是什么?

谢谢。

我认为这个问题已经在这里得到了很多回答:

基本上你不会把composer包放到modules文件夹里,而是让Composer把它们放到vendor目录里。这将不需要安装模块依赖项,因为主应用程序的 Composer 将一次性解决所有依赖项。

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

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

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