2013-04-22 151 views
2

我正在開發一個項目,您可以在其上安裝擴展,即安裝核心程序,然後您可以下載並向其添加第三方擴展。分享作曲家依賴關係

如果有兩個單獨的擴展需要相同版本的相同依賴項(例如,如果兩個擴展需要AWS SDK),是否有任何方法可以使作曲者不會最終下載兩個副本相同的依賴關係?

回答

2

您可以創建擴展名爲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來引用專用存儲庫。此功能在此處有詳細記錄:Managing private packages with Satis and Composer