我正在开发一个可以安装扩展的项目,即安装核心程序,然后可以下载并向其添加第三方扩展。
如果有两个单独的扩展需要相同依赖项的相同版本(例如,如果两个扩展需要 AWS SDK),是否有任何方法可以使 Composer 最终不会下载两个副本相同的依赖关系?
最佳答案
您可以将扩展创建为 Composer 包。然后将对您自己的包的引用添加到主 composer.json
文件中。
例如:
root/
my-extension-a/
composer.json ( require: dep-a, dep-b)
vendor/
dep-a/
dep-b/
my-extension-b/
vendor/
dep-a/
dep-c/
composer.json (require dep-a, dep-c)
main-project/
composer.json (require my-extension-a, my-extension-b)
vendor/
my-extension-a/
my-extension-b/
dep-a/
dep-b/
dep-c/
主项目中的 composer.json
文件如下所示:
"require": {
"parent5446/my-extension-a": "dev-master",
"parent5446/my-extension-b": "dev-master"
}
您可以在 packagist 中公开您的扩展。或者您可以使用 Satis 来引用私有(private)存储库。此功能在这里有详细记录:Managing private packages with Satis and Composer
关于php - 共享 Composer 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16150831/