获取ZF2模块的开发副本

时间:2014-12-04 17:34:12

标签: php module zend-framework2 composer-php autoloader

我有一个主要的应用程序模块和几个相关模块。所有模块在github上都有自己的存储库,并通过composer安装(使用满意的本地存储库)。 在开发过程中,我需要在主模块或从属模块中进行更改。但是依赖模块位于/ vendor目录中,并且在那里进行更改和git init是个坏主意。 所以,我需要/ devmodules文件夹中每个模块的本地副本,并将此文件夹添加到application.config:

'module_listener_options' => array(
 // ...
  'module_paths' => array(
      './module',
      './vendor',
      './devmodules'
  ),

如何告诉ZF不要使用/ vendor来购买这些模块?在composer中更改自动加载器/使用make工具或钩子脚本来制作新副本和清理/供应商? 解决问题的最佳做法是什么?

P.S。依赖模块是我自己与Application并行开发的模块。所以我希望立即看到更改,而不是在提交/推送/更新之后。

2 个答案:

答案 0 :(得分:0)

我遇到了这个问题" SpeckCommerce"你把这个问题作为一个问题发布的地方。使用SpeckCommerce我们必须从composer.json删除该模块,因为作曲家自动加载器正在覆盖devmodules版本。

使这项工作的方法是从composer.json删除模块,在devmodules文件夹中开发,提交它然后重新引入作曲家加载的版本。

这会导致其他问题与家属有关。如果删除作为另一个模块的依赖项的模块,则会导致编译器安装/更新中的依赖项解析问题。

我认为更简单的工作方式是在安装/更新时告诉作曲家--prefer-source然后会给你一个版本控制的存储库,你可以添加一个遥控器,切换到那个,然后推送到你自己的在创建PR和合并等之前存储库。

vendor目录中的图书馆工作有点痛苦,但根据我的经验证明这是最有效的工作方式。

答案 1 :(得分:0)

对我来说,我得到了下一个解决方案:

1)将这样的想法添加到composer.json中的"script" - 部分:

"devmodules": [
    "mkdir devmodules",
    "git clone git://github.com/4orever/ppc-auth/           devmodules/ppc-auth",
    "git clone git://github.com/4orever/ppc-backend/        devmodules/ppc-backend",
    "git clone git://github.com/4orever/ppc-backend-client/ devmodules/ppc-backend-client",
    "git clone git://github.com/4orever/ppc-dev-mode/       devmodules/ppc-dev-mode",
    "git clone git://github.com/4orever/ppc-main-assets/    devmodules/ppc-main-assets",
    "rm -rf vendor/4orever"
]

2)并添加"autoload-dev"

 "autoload-dev": {
     "psr-4": {
        "PpcMainAssets\\":  "devmodules/ppc-main-assets/",
        "PpcBackend\\":     "devmodules/ppc-backend/src",
        "PpcAuth\\":     "devmodules/ppc-auth/src"
    },
    "classmap":[
        "devmodules/ppc-backend/Module.php",
        "devmodules/ppc-backend-client/Module.php",
        "devmodules/ppc-auth/Module.php"
    ]
 }

3)对于生产,只需使用:composer install --no-dev。我没有测试它,但我想必须忽略'autoload-dev'。如果没有运行composer dumpautoload --no-dev

4)对于开发:composer installcomposer devmodules

我不喜欢使用作曲家制作的标准./vendor文件夹,因为默认情况下它没有连接到git。我更喜欢我需要的文件夹中的git clone

我希望它会有用。