Php 共享编写器依赖项

Php 共享编写器依赖项,php,dependencies,composer-php,Php,Dependencies,Composer Php,我正在做一个项目,你可以在上面安装扩展,也就是说,你安装核心程序,然后你可以下载并添加第三方扩展 如果有两个独立的扩展需要相同版本的相同依赖项(例如,如果两个扩展需要AWS SDK),是否有任何方法使composer不会下载相同依赖项的两个副本?您可以将扩展项创建为composer包。然后将对您自己的包的引用添加到主composer.json文件中 例如: root/ my-extension-a/ composer.json ( require: dep-a, dep-b)

我正在做一个项目,你可以在上面安装扩展,也就是说,你安装核心程序,然后你可以下载并添加第三方扩展


如果有两个独立的扩展需要相同版本的相同依赖项(例如,如果两个扩展需要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"
}
您可以在PackageGist中公开扩展。或者,您可以使用Satis引用私有存储库。此功能在此处有详细说明: