本文爲針對微信小程序發佈過程當中提示的"如下文件體積超過500KB,已經跳過壓縮以及ES6轉ES5處理,如在該文件有使用到ES6特性,請使用其它工具轉換成ES5或壓縮,不然可能會在低版本設備上運行有風險:. static/js/vendorjs"
html
使用mpvue小程序開發打包發佈上傳時,會出現如下的報錯: vue
依據錯誤提示,打開工程dist目錄下/static/js/vendor.js,能夠發現這是一個公共包,若是在多個頁面或者模塊使用到有相關的代碼,那麼該代碼會被Webpack識別爲公共代碼,公共代碼都會被抽離到這裏來,從保留的註釋,咱們大概能知道哪些內容是公共部份。 node
安裝依賴webpack
build
目錄的
webpack.dev.conf.js
配置文件中添加分析配置,關鍵代碼以下:
Stat
按鈕
回到webpack打包配置部份,找到公共代碼抽離部份,能夠發現CommonChunkPlugin
(因該工程使用的是mpvue相對較舊的以前版本,對應的webpack使用的是CommonChunkPlugin)
CommonsChunkPlugin主要是用來提取第三方庫和公共模塊,避免首屏加載的bundle文件或者按需加載的bundle文件體積過大,從而致使加載時間過長
這裏抽取的是第三方公共包部份。 git
注:webpack4以前使用的是webpack.optimize.CommonsChunkPlugin,以後則是使用config.optimization.splitChunk來進行公共代碼抽離github
經過分析工程,以本工程爲例,能夠發如今分析報告中佔據大塊面積的包模塊主要集中在劃紅線部份: web
上圖所示的內容將會被統一打包入Vendor.js,在不改變業務邏輯,例如刪除無用引用等狀況下,須要對Vendor.js打包內容進一步拆分。
方法就是:建多一個CommonsChunkPlugin對Vendor.js裏邊的內容,依據匹配列表進行二次拆分。 json
上一步驟解決了webpack配置問題,會生成多一個叫commons.js的公共包,但還需解決另外一個問題,打包文件對該文件的引用。 文件引用的關鍵代碼在node_modules/mpvue-loader/lib/mp-compiler/templates.js
咱們須要對該文件進行改造:小程序
創建引用改造文件check-vendor.js
微信小程序
打包時先執行覆蓋文件,再執行打包命令
配置script入口
經過翻閱其它資料,還有其它方案,好比:
小程序分包
但因考慮到工程業務儘可能不更改,新舊版本兼容等問題,這裏採用了自行修改webpack打包機制方案,儘可能作到對業務邏輯代碼影響最小。
還有一種方案,就是須要分析業務邏輯代碼中有些包是否能夠只導入須要的部份,例如i18,依據業務判斷是否須要那麼多的語言包之類,等等,例如如下介紹的方法:
Webpack優化技巧,構建效率提高50%
經過以上的一系列步驟優化,最終對好比下:
經過以上分析和解決步驟,考慮到工程是否適合升級新版本mpvue,對現有業務邏輯影響有多大等評估,最終咱們選擇了不動業務邏輯,改造webpack的方式進行。若是風險不太大,建議可考慮小程序分包方案。
最簡示例DEMO已上傳到Github: mp-compress 有須要的朋友歡迎參考。