2014-06-18 81 views
0

我有項目projectAlfa和我的依賴關係my/project-beta。但my/project-beta有依賴關係otherProject沒有composer.json。所以我在my/project-beta中定義了類型package的存儲庫。加載對Composer的依賴關係以及依賴關係中定義的存儲庫

項目阿爾法composer.json

{ 
    "repositories": [ 
    { 
     "type": "git", 
     "url": "http://github.com/my/project-Beta" 
    } 
    ], 
    "require": { 
    "my/project-beta": "dev-master" 
    } 
} 

工程測試版composer.json

{ 
    "name": "my/project-beta", 
    "repositories": [ 
    { 
     "type": "package", 
     "package": { 
     "name": "other/project", 
     "version": "dev-master", 
     "source": { 
      "type": "git", 
      "url": "http://github.com/Other/Project", 
      "reference": "master" 
     } 
     } 
    } 
    ], 
    "require": { 
    "other/project": "*" 
    } 
} 

問題:

如果我composer installprojectAlfa則依賴性沒有被加載運行,因爲:

my/project-beta dev-master requires other/project * -> no matching package found

回答

0

你有兩種可能的解決方案。首先,Composer會忽略任何不屬於主項目核心composer.json文件一部分的附加存儲庫。然而,您可以在那裏重複所有這些提及,然後讓Composer在沒有composer.json文件的情況下查找此第三方依賴項。

重複您從代碼中獲取代碼的所有存儲庫不是最好的解決方案,但是對於小範圍來說,這是一個快速的解決方案。

第二種解決方案是創建一個lokal Satis存儲庫,其中包含來自私有存儲庫的所有元數據,這些元數據在packagist.org上未知。您仍然需要手動添加鏈接到這個Satis存儲庫URL,但這在任何地方都是一樣的,如果您在Satis中更新某些內容,所有項目都將立即從中受益,而無需更改內部的某些內容。