以下由composer使用教學專欄為大家介紹YII2如何透過composer優化vendor,希望對需要的朋友有幫助!
本文討論透過composer工具安裝Yii2框架並優化Vendor過程中遇到的問題,約定讀者對composer基本原理有一定了解,並且有安裝Yii2框架的實際經驗。
在Yii2社群裡常常會遇到一類問題,那就是 安裝官方推薦的版本後
1 為什麼沒有vendor資料夾?
在Yii2 中,vendor是composer下載的依賴庫文件,官方的專案範本程式碼裡只有自己的專案文件,而其依賴的yii框架等類別庫,都記錄在composer.json裡面,只要安裝好composer,然後install或update即可。
2 自己安裝的Yii2的專案中,vendor中的套件在composer.json 中找不到對應,而這些套件大多是暫時不需要用到的,該如何remove,保持vendor最小化?
驗證過的場景
2.1 使用composer remove 刪除套件
所刪除的套件必須在vendor資料夾下的composer.json中有記錄,並且在刪除包的同時,所有的套件會重新安裝一次。
2.2 使用 composer update --no-dev 刪除包
#開發模式下的套件會直接被刪除,刪除後執行項目,直接報錯。因此開發模式的套件不能全部刪除
2.3使用remove codeception/verify 刪除套件,大部分測試模式的套件均被刪除,根據我的以往開發經驗,單元測試相關的元件沒有使用到,所以可以remove codeception/verify 指令對Yii2的compposer套件進行精簡。這個指令是優化composer包的關鍵一環。
3 多個專案在一個工程下時,會不會因為第一次載入composer套件太多而造成載入的效能問題, 自帶的延遲載入是否能夠解決這個問題?
專案明顯不需要的元件可以直接remove處理掉,至於效能效能影響暫時還沒遇過。延遲載入算是框架層級的最佳化,我選擇相信它的能力
4 vendor路徑問題造成的目錄或檔案不存在提示
假設我們的專案路徑是E:sourcestemplates
在Vendor路徑有問題時,會出現以下類似的問題,即某個composer套件不存在
Invalid Parameter – yiibaseInvalidParamException The file or directory to be published does not exist: E:sourcestemplatesbackendvendorbower-asset/jquery/dist
檔案包不存在只是表現,主要的原因是vendor路徑和工程的設定檔不對應。
在工程的主設定檔main.php下有關於vendor的設定入口,VendorPath具體值,要結合設定檔的路徑,請參考下面的兩張圖以及相關的路徑設定
第一幅
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
第二幅
#'vendorPath' => dirname(dirname(dirname(__DIR__))) . '/vendor',
總結:
我們在使用compser時需要考慮以下三個問題
1 composer install 和composer update的區別
2 composer版本管理和穩定性
3 公共元件如何以composer包的方式輸出和維護
以下命令區別參考網絡資料整理
composer install
應該是最常用的命令,composer會根據本地的composer.json安裝包,將下載的套件放入項目下的vendor目錄下,同時將安裝時候的套件版本資訊放入到composer.lock,以便鎖定版本.
其實在install的時候,假如發現composer.lock版本和目前vendor目錄下的程式碼版本是一致的,則Composer會什麼也不做,composer.lock的目的就是讓你安心在目前這個版本下工作,而不獲取最新版本的包.
composer update
composer .lock檔案中的套件版本會被更新,composer.json記錄的套件都會被更新到最新。
composer update指令要謹慎使用。
如果元件已經使用composer引用到專案中,成為公用元件,需要謹慎使用composer指令,當然需要專人負責維護,沒有共用操作權限。
更多composer使用教學課程,請造訪composer指令使用圖文教學欄位!
以上是YII2如何透過composer優化vendor的詳細內容。更多資訊請關注PHP中文網其他相關文章!