国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue cli升級webapck4總結

2019-11-19 14:03:59
字體:
來源:轉載
供稿:網友

webpack4 released 已經有一段時間了,插件系統趨于平穩,適逢對webpack3的打包速度很不滿意,因此決定將當前在做的項目進行升級,正好也實踐一下webpack4。

新特性

0配置

應該是parcel出來以后,webpack團隊意識到其配置確實有點復雜,不太容易上手。so, webapck4 開始支持0配置啟動。不過,萬變不離其宗,webpack4的0配置也只是支持了默認entry 和 output而已,即默認entry為./src,默認output為/dist。

模式選擇mode

mode有兩個可選項,production & development。作為必選項,mode是不可缺省的。在production模式下,會默認做一些必要的優化,如代碼壓縮和作用域提升,還會默認指定process.env.NODE_ENV 為 production。在development模式下,優化了增量構建,支持注釋和提示,并且支持 eval 下的 source maps,同時默認指定process.env.NODE_ENV 為 development。

sideEffects

通過該配置可以大幅度減小打包體積。當模塊的 package.json 配置sideEffects:false表明該模塊沒有副作用,也就意味著 webpack 可以安全地清除被用于重復導出(re-exports)的代碼。

模塊類型

webpack4提供了5種模塊類型。

  1. json: 可通過 require 和 import 導入的 JSON 格式的數據(默認為 .json 的文件)
  2. webassembly: WebAssembly 模塊,(目前是 .wasm 文件的默認類型)
  3. javascript/auto: (webpack 3中的默認類型)支持所有的JS模塊系統:CommonJS、AMD。
  4. javascript/esm: EcmaScript模塊(默認 .mjs 文件)。
  5. javascript/dynamic: 僅支持 CommonJS & AMD。

JSON

webpack 4 不僅支持本地處理 JSON,還支持對 JSON 的 Tree Shaking。當使用 ESM 語法 import json 時,webpack 會消除掉JSON Module 中未使用的導出。此外,如果要用 loader 轉換 json 為 js,需要設置 type 為 javascript/auto。

optimization

Webpack 4 刪除了 CommonsChunkPlugin,并默認啟用了它的許多功能。因此webpack4可以實現很好的默認優化。但是,對于那些需要自定義的緩存策略,增加了 optimization.splitChunks 和 optimization.runtimeChunk。具體解釋可參考這篇文章,解釋得很詳細。RIP CommonsChunkPlugin點擊預覽

手把手升級

我是把原來vue cli的項目做了一下升級,總體來說,升級還算是比較順利步驟,這里我們分成兩步走,首先升級相關依賴的插件,然后優化webapck配置文件。

升級插件

首先要把下面列表的插件升級到對應版本或者最新版本

webpack@4.4.1
css-loader@0.28.10,
extract-text-webpack-plugin@4.0.0-beta.0,
file-loader@1.1.11,
html-webpack-plugin@3.1.0,
optimize-css-assets-webpack-plugin@4.0.0,
url-loader@1.0.1,
vue-loader@14.2.2,
vue-style-loader@4.1.0,
vue-template-compiler@2.5.16,
webpack-bundle-analyzer@2.11.1,
webpack-dev-middleware@3.1.0,
webpack-dev-server@3.1.1,
webpack-hot-middleware@2.21.2

如果遇到其他包報錯,應該是升級到最新的就可以解決了。

更新配置文件

webpack.dev.conf.js

dev環境變化不大,畢竟webpack4很大一部分的優化都是針對生產環境的,該文件我們只需要刪除一些不再需要的插件既可以。例如:webpack.NamedModulesPlugin、webpack.NoEmitOnErrorsPlugin,其功能webpack4已經默認配置。同時,要設置

mode: 'development'
webpack.production.conf.js

webvpack4中改動最大,影響也最大的就是webpack4使用optimization.splitChunks替代了CommonsChunkPlugin。以前的CommonsChunkPlugin主要用來抽取代碼中的共用部分,webpack runtime之類的代碼,結合chunkhash,實現最好的緩存策略。而optimization.splitChunks則實現了相同的功能,并且配置更加靈活,具體解釋可參考這篇文章,解釋得很詳細。

mode: 'production',optimization: {splitChunks: {cacheGroups: {vendors: {test: /[///]node_modules[///]/,chunks: 'initial',name: 'vendors',},'async-vendors': {test: /[///]node_modules[///]/,minChunks: 2,chunks: 'async',name: 'async-vendors'}}},runtimeChunk: { name: 'runtime' }}

總結

總體來說本次升級還算順利,不到一天搞定,目前感覺,打包速度大約優化了70%左右,同時打包后的代碼體積也有了很大的優化,帶來的效果很顯著的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 房产| 宝应县| 阿拉善右旗| 枣庄市| 高陵县| 平和县| 台湾省| 常山县| 蒲江县| 织金县| 罗定市| 石屏县| 呈贡县| 常德市| 南溪县| 盘山县| 德庆县| 黄山市| 武隆县| 泰宁县| 富川| 怀集县| 若尔盖县| 荔波县| 仁布县| 米林县| 大渡口区| 灯塔市| 郧西县| 静海县| 湖口县| 教育| 高雄市| 铅山县| 永登县| 卢氏县| 奉节县| 抚顺市| 慈利县| 威海市| 新乡县|