2016-11-16 41 views
2

如果之前已詢問過此問題,但在搜索一段時間後我無法真正找到我的困境的答案,我很抱歉。作曲家自動加載機,github和部署

我是一個正在開發PHP項目的團隊的一員,我們使用github進行版本控制。我們希望實現一臺PSR-4自動裝載機,每個指南都使用Composer,所以我們也是如此。現在,在搜索過程中,我瞭解到供應商文件夾不應該包含在github中,而只包含composer.json,並且每個開發人員都需要將composer安裝到自己的計算機上。

這是否需要在每臺開發人員計算機上重新創建自動裝載器?

最後,當項目完成後,我們希望將其上傳到我們的網站上,但我們唯一能做的就是通過FTP。

應該將哪些文件上傳到實時網站以及該自動裝載機會發生什麼情況?

回答

1

您還需要提交composer.lock文件。這是非常重要的 - 這意味着每當其他人簽出代碼時,他們將獲得相同的一組依賴(包括其確切版本)安裝到他們的/ vendor目錄。

這就是爲什麼您不需要提交/ vendor目錄來提交 - 鎖文件負責確保依賴關係得到解決。

composer.json定義了許多符合您要求的潛在版本。運行composer update主要檢查是否有可用的更新版本以滿足這些要求。這就是安裝和更新之間的區別 - 安裝關閉鎖定文件並確切知道要查找的內容 - 更新將關閉json文件,並可能在不同的時間點返回不同的結果。

在你的composer.json中,你可以通過告訴它你的根名字空間的位置來定義自動加載器。

"autoload": { 
    "psr-4": { 
     "RootNamespace\\": "library/src" 
    } 
}, 

當你的同事已經運行composer install它將以一致的路徑爲他們創造自動加載。

您有部署選項:

您可以上傳composer.lock文件並運行一個安裝作曲家生產,或做它的時間提前,並上傳你的供應商目錄作爲構建的一部分。

我做後者,因爲我更喜歡這個時候是否有問題知道之前在生產服務器上更改任何文件。另一種方法可能會使生產中的缺陷依賴性升級。首先安裝這些依賴關係並一次性傳輸所有內容。另外,我還希望將新版本安裝到git commit命名的單獨文件夾中,然後將其作爲部署步驟的一部分進行符號鏈接。這可以確保您在等待剩下的文件上傳時沒有半更新的應用程序。這種方法也可以消除之前提到的問題,這意味着您可以在生產環境中進行作曲家安裝。

+1

只是關於'composer.lock'的額外說明。它不僅確保您獲得相同的依賴關係,而且確保相同的版本(只是認爲值得指出)。另外,在將文件上傳到製作服務器之前,請運行:'composer install --no-dev --optimize-autoloader'以確保您只能獲得相關的軟件包(忽略dev-packages)和優化的自動加載器(它不會執行「不需要搜索試圖尋找類的IO)。 –

+0

是的,這就是我的意思(關於版本),但我不夠具體 - 感謝指出。 – bcmcfc

+1

符號鏈接FTW。如果需要,它還可以輕鬆恢復到以前的版本。 –