2012-12-30 71 views
6

我一直在使用JAVA的maven,並開始使用PHP Maven,最近我切換到作曲家。更好的方法來下載php作曲家的依賴關係

我的項目是Zend Framework 2,團隊只在應用程序代碼中檢查供應商目錄中的任何內容。這樣做是爲了避免衝突,而不是SVN下的庫。

現在,每當開發者設置他或她的新環境時,我們都會觀察到,作曲者從互聯網中獲取依賴關係。這需要相當長的時間。

有沒有更好的想法/方法來加快速度或以不同的方式處理項目以避免此問題?

maven使用maven代理服務器,它可以緩存下載並可以在網絡中再次使用,但是我們有任何解決方案來處理這樣的問題嗎?

回答

1

在PHP中存在本地運行像回購作曲家現有的選項,這就是所謂的賽帝(它實際上是由作曲家提供)位置:https://github.com/composer/satis

所以,你可以在你的服務器上本地運行它,並指出你的作曲家使用它作爲默認的作曲庫,並且Satis確保所有已安裝的軟件包和不同版本都以ZIP文件的形式緩存在磁盤上,因此與從Internet下載文件時相比,可以更快地檢索它們。

你可以做這樣的事情:

{ 
    "repositories": [ 
     { 
      "type": "composer", 
      "url": "http://satis.example.org/" 
     } 
    ], 
    "require": { 
     "company/package": "1.2.0", 
     "company/package2": "1.5.2", 
     "company/package3": "dev-master" 
    } 
} 

這也可以讓你有私人包和庫不暴露他們在GitHub上。

另一個BIG的優勢是當GitHub由於任何原因停機時仍然可以部署,因爲所有的依賴關係都在本地緩存。假設您沒有向該版本添加新的,不存在的軟件包。

+0

這完全解決了這個問題。 – sujaisd

2

作曲家是一個非常年輕的項目,所以可能會有東西丟失,例如, Maven可以毫不費力地合作。

您可以按照composer docs中的說明設置您自己的Packagist服務器。我相信packagist有一些緩存選項可用於在packagist服務器上存儲軟件包。

您還可以做的是分叉您的依賴關係並將它們推送到公司擁有的私有存儲庫。在您的composer.json中,您現在只能使用這種依賴關係,從而更快地進行克隆。當然這需要你維護所有不同的依賴關係(儘管這可以通過腳本和cronjob完成,從github倉庫中提取數據並將其推送到你的公司所擁有的倉庫中)。

我也相信作曲家有一些代理選項,但我不認爲這些是爲了緩存依賴關係。

最後的選擇是開發類似的東西,作爲作曲家/包裝師的一部分或作爲獨立作品。

+0

我會嘗試使用packigst和代理選項,並讓您知道反饋。現在感謝。 – sujaisd