下面由composer教程欄目為大家講解composer 不遞歸加載代碼庫的原因,希望對需要的朋友有所幫助!
為什么 Composer 不遞歸加載代碼庫?
當你使用自定義庫時,你可能會碰到問題,因為 Composer 不會遞歸加載您要求的需求庫,所以你必須重新定義這些庫中所有的 composer.json 文件。
在詳細說明為什么是這樣之前,你需要明白:自定義 VCS 和包存儲庫的主要用途是臨時測試一些東西,或者 Fork 一個項目做了些改進,并且你的 Pull Request 還未被 Merge,等等。你不應該使用它們來跟蹤你的私人資源包,關于這點你應該看看? 私有的 Packagist 來為你的公司甚至自己處理私人資源包。
這里有三個途徑可以使依賴解析器使用你自定義的儲存庫:
● 讀取根包的存儲庫,從定義的存儲庫得到所有的軟件包,解析依賴需求。這是目前的狀態,它工作得很好,除了有 “無法遞歸的加載儲存庫” 這個限制。
●?讀取根包的存儲庫,同時從定義的 repos 初始化資源包,遞歸的初始化,根據所有依賴包中定義的 repos,以及這些依賴包所依賴的其它包中定義的 repos,等等,然后再解析依賴需求。這可能可以工作,但會嚴重影響初始化的速度,因為每讀取一個 VCS repos 都需要幾秒鐘。它可能最終執行失敗,因為一個包的不同版本,可能來自一個包資源庫中一個相同的包,但來至不同的 dist/source 。這樣有太多的可能會出錯。
●?讀取根包的存儲庫,然后讀取第一級依賴,接著讀取這些依賴包所依賴的其它包,等等,然后再解析依賴需求。這樣聽起來更有效率,但仍然存在第二種解決方案中的問題。因為加載依賴的儲存庫并不像聽起來那么容易。你需要加載所有可能匹配的依賴包的 repos,而這些包的定義又可能是互相沖突的。
更多composer使用教程,請訪問Composer 欄目!