我有一个主要的应用程序模块和几个相关模块。所有模块在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并行开发的模块。所以我希望立即看到更改,而不是在提交/推送/更新之后。
答案 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 install
和composer devmodules
我不喜欢使用作曲家制作的标准./vendor
文件夹,因为默认情况下它没有连接到git。我更喜欢我需要的文件夹中的git clone
。
我希望它会有用。