如何同时开发多个存在依赖关系的Composer包?
可行解决方案如下
使用版本别名(Alias)
这是最便捷的解决方案,你可以在项目根目录的composer.json中,将本地开发的dev-master版本的A包别名设置为B包需要的目标版本,Composer会自动将该版本识别为符合约束的版本。示例配置如下:{ "repositories": [ { "type": "path", "url": "../path-to-your-local-package-a" } ], "require": { "vendor/package-a": "dev-master as 1.5.999", "vendor/package-b": "^2.0" } }上述示例中,如果B包要求A包版本约束为
^1.5.0,别名1.5.999就可以完全满足版本要求,同时依然保留本地软链的开发模式。给本地A包打Git标签
Composer解析path类型的包版本时,会读取包对应本地Git仓库的标签信息,你不需要把标签推送到远程仓库,只需要在A包的本地目录下执行符合B包版本要求的打标签命令即可:# 进入A包本地目录执行 git tag 1.5.0如果你后续修改了A包的代码,可以删除旧标签后重新打,或者打更高版本的符合约束的标签即可,Composer会自动识别到对应版本。
临时调整B包的依赖约束
如果两个包都是你自行维护的,开发阶段可以将B包中对A包的依赖约束临时调整为兼容开发版本的写法,例如:// B包的composer.json require 节点 { "vendor/package-a": "dev-master as 1.5.0" }待两个包开发完成准备发布时,再将B包的依赖约束改回正式的版本号即可。
内容的提问来源于stack exchange,提问作者Mr_Chimp
相关产品推荐
相关产品推荐

