2

我正在开发一个可以安装扩展的项目,即安装核心程序,然后可以下载并添加第三方扩展。

如果有两个单独的扩展需要相同版本的相同依赖项(例如,如果两个扩展需要 AWS 开发工具包),有没有办法让作曲家最终不会下载相同依赖项的两个副本?

4

1 回答 1

2

您可以将扩展创建为作曲家包。然后将对您自己的包的引用添加到您的主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 来引用私有存储库。此功能在此处有详细记录:使用 Satis 和 Composer 管理私有包

于 2013-04-22T15:45:34.773 回答