Vue開發時運行npm install命令導致npm包自動升級而引起bug


最近在使用vue3.0開發程序。
今天使用npm install后,程序出現了bug,頁面布局亂了,將代碼回滾到以前正確的版本,仍然解決不了問題。后來發現,是npm插件更新的原因,新版本的"@vue/compiler-sfc": "3.1.1", 會導致我們的程序出現bug。為什么插件會自動升級呢?因為我的package.json里寫的是"@vue/compiler-sfc": "^3.0.7", 這個^ 符號,表示使用npm install時,在保證大版本號不變(這里是3)的前提下,會盡量取最新代碼,所以系統就為我自動升級到了3.1.1版本。
項目中的package-lock.json文件並不能夠限制npm install命令自動升級插件,而且當package 文件中的聲明和lock文件中的聲明沖突時npm install 命令可以更改package-lock.json文件(如果不沖突,則不會更改lock文件,比如package里寫的是"@vue/compiler-sfc": "^3.0.7" 而 lock 文件里寫的是 "@vue/compiler-sfc": "3.1.1")。package-lock.json反映的是當前系統正在使用的插件的准確版本,比如"@vue/compiler-sfc": "3.1.1" 。 如果package.json中用了^ 符號,而本次安裝卻只想要使用package-lock.json中記錄的准確版本,不想自動升級插件,那么應該使用npm ci 命令。此命令只會按照package-lock.json的記錄准確還原版本號,不會升級插件版本,也不會更改package-lock.json文件。

綜上,在應用開發過程中,我們可以在package.json里使用"^3.0.7"這種版本號,並結合npm install 命令不斷更新到新版本,以便利用新版本特性。而一旦程序開發完成,在發布過程中,一定要使用NPM CI命令,通過PACKAGE-LOCK.JSON准確還原NPM包,防止出現插件自動升級導致的BUG。
另外,在vue開發過程中,一旦發現了代碼回滾都解決不了的奇怪問題,那么很可能npm包被升級導致的。可以手動去除package.json里的^ 符號,寫成固定版本號,重新編譯,觀察效果,以便找到出錯的包。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM