摘要:本文討論通過工具安裝框架并優化過程中遇到的問題,約定讀者對基本原理有一定了解,并且有安裝框架的實際經驗。這個命令是優化包的關鍵一環。命令要謹慎使用。
本文討論通過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四種加載方式
http://nai8.me/sapper-view.ht...
https://segmentfault.com/q/10...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25744.html
摘要:中是如何實現代碼的自動加載的入口腳本的以下兩行代碼其中的作用注冊為自動加載函數。這個負責引入了一個類中的,隨后立即解除注冊。注冊中的為自動加載函數,并利用配置文件即目錄下的文件對這個自動加載函數進行了初始化。 1.基本知識 Include與require 的作用: 當一個文件被包含時,其中所包含的代碼繼承了 include 所在行的變量范圍。從該處開始,調用文件在該行處可用的任何...
摘要:運行來安裝指定的擴展。這更便于用戶辨別是否是的擴展。當用戶運行安裝一個擴展時,文件會被自動更新使之包含新擴展的信息。上述代碼表明該擴展依賴于包。例如,上述的條目聲明將對應于別名。為達到這個目的,你應當在公開發布前做測試。 簡述 擴展是專門設計的在 Yii 應用中隨時可拿來使用的, 并可重發布的軟件包。 基礎 例如, yiisoft/yii2-debug 擴展在你的應用的每個頁面底部添加...
摘要:本文簡要回顧相關概念和用法。相比之下已是明日黃花。分別對應的命令是根據關鍵字查找依賴包,例如查找本人發布的包。作為目前包依賴管理的最佳工具,值得每一位開發人員掌握。 轉載請注明文章出處:https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎 web請求 cookie web響應 session 數據庫操作 加解密 Composer是PHP...
摘要:一簡介作為工程師,我們很可能遇到一些有必要的進行單元測試的場景。本系列文章就來介紹下,在框架下,如何使用進行單元測試。 一、簡介 作為php工程師,我們很可能遇到一些有必要的進行單元測試的場景。本系列文章就來介紹下,在Yii2框架下,如何使用Codeception進行單元測試。本篇就首先介紹Yii2,以及Codeception的安裝。 二、Yii2和codeception安裝 安裝Yi...
摘要:本教程主要基于大神的開源商城,為大家解讀的源碼,由于原版商城更多是針對國際業務,因此本教程會適當修改,使其更適合于微信環境。 本教程主要基于 terry 大神的開源商城 Fecshop,為大家解讀 Fecshop 的源碼,由于原版商城更多是針對國際業務,因此本教程會適當修改,使其更適合于微信環境。由于商城源碼復雜,本教程將長期更新。本人也是邊學習邊寫這份教程,過程中難免會出現錯誤,還請...
閱讀 2375·2021-09-30 09:47
閱讀 1366·2021-09-28 09:35
閱讀 3237·2021-09-22 15:57
閱讀 2484·2021-09-22 14:59
閱讀 3633·2021-09-07 10:25
閱讀 3068·2021-09-03 10:48
閱讀 3035·2021-08-26 14:14
閱讀 933·2019-08-30 15:55