您還需要提交composer.lock文件。這是非常重要的 - 這意味着每當其他人簽出代碼時,他們將獲得相同的一組依賴(包括其確切版本)安裝到他們的/ vendor目錄。
這就是爲什麼您不需要提交/ vendor目錄來提交 - 鎖文件負責確保依賴關係得到解決。
composer.json定義了許多符合您要求的潛在版本。運行composer update
主要檢查是否有可用的更新版本以滿足這些要求。這就是安裝和更新之間的區別 - 安裝關閉鎖定文件並確切知道要查找的內容 - 更新將關閉json文件,並可能在不同的時間點返回不同的結果。
在你的composer.json中,你可以通過告訴它你的根名字空間的位置來定義自動加載器。
"autoload": {
"psr-4": {
"RootNamespace\\": "library/src"
}
},
當你的同事已經運行composer install
它將以一致的路徑爲他們創造自動加載。
您有部署選項:
您可以上傳composer.lock文件並運行一個安裝作曲家生產,或做它的時間提前,並上傳你的供應商目錄作爲構建的一部分。
我做後者,因爲我更喜歡這個時候是否有問題知道之前在生產服務器上更改任何文件。另一種方法可能會使生產中的缺陷依賴性升級。首先安裝這些依賴關係並一次性傳輸所有內容。另外,我還希望將新版本安裝到git commit命名的單獨文件夾中,然後將其作爲部署步驟的一部分進行符號鏈接。這可以確保您在等待剩下的文件上傳時沒有半更新的應用程序。這種方法也可以消除之前提到的問題,這意味着您可以在生產環境中進行作曲家安裝。
只是關於'composer.lock'的額外說明。它不僅確保您獲得相同的依賴關係,而且確保相同的版本(只是認爲值得指出)。另外,在將文件上傳到製作服務器之前,請運行:'composer install --no-dev --optimize-autoloader'以確保您只能獲得相關的軟件包(忽略dev-packages)和優化的自動加載器(它不會執行「不需要搜索試圖尋找類的IO)。 –
是的,這就是我的意思(關於版本),但我不夠具體 - 感謝指出。 – bcmcfc
符號鏈接FTW。如果需要,它還可以輕鬆恢復到以前的版本。 –