最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue cli升級webapck4總結(jié)

 更新時間:2018年04月04日 08:47:59   作者:wupengyu  
這篇文章主要介紹了vue cli升級webapck4的步驟以及需要注意的地方,大家可以跟著操作學(xué)習(xí)下。

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

新特性

0配置

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

模式選擇mode

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

sideEffects

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

模塊類型

webpack4提供了5種模塊類型。

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

JSON

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

optimization

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

手把手升級

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

升級插件

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

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

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

更新配置文件

webpack.dev.conf.js

dev環(huán)境變化不大,畢竟webpack4很大一部分的優(yōu)化都是針對生產(chǎn)環(huán)境的,該文件我們只需要刪除一些不再需要的插件既可以。例如:webpack.NamedModulesPlugin、webpack.NoEmitOnErrorsPlugin,其功能webpack4已經(jīng)默認(rèn)配置。同時,要設(shè)置

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

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

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' }
}

總結(jié)

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

相關(guān)文章

  • vue 自動生成swagger接口請求文件的方法

    vue 自動生成swagger接口請求文件的方法

    這篇文章主要介紹了vue 自動生成swagger接口請求文件的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • Vue關(guān)鍵字搜索功能實戰(zhàn)小案例

    Vue關(guān)鍵字搜索功能實戰(zhàn)小案例

    在vue項目中,搜索功能是我們經(jīng)常需要使用的一個場景,下面這篇文章主要給大家介紹了關(guān)于Vue關(guān)鍵字搜索功能的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • vue將對象新增的屬性添加到檢測序列的方法

    vue將對象新增的屬性添加到檢測序列的方法

    下面小編就為大家分享一篇vue將對象新增的屬性添加到檢測序列的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • vue3?keepalive源碼解析解決線上問題

    vue3?keepalive源碼解析解決線上問題

    這篇文章主要為大家講解了vue3?keepalive源碼解析解決線上問題,需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Vue動態(tài)組件component標(biāo)簽的用法大全

    Vue動態(tài)組件component標(biāo)簽的用法大全

    這篇文章主要介紹了Vue動態(tài)組件component標(biāo)簽的用法,在Vue中,可以通過component標(biāo)簽的is屬性動態(tài)指定標(biāo)簽,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • VueJs中的shallowRef與shallowReactive函數(shù)使用比較

    VueJs中的shallowRef與shallowReactive函數(shù)使用比較

    這篇文章主要為大家介紹了VueJs中的shallowRef與shallowReactive函數(shù)的使用比較解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Vue3新特性Suspense和Teleport應(yīng)用場景分析

    Vue3新特性Suspense和Teleport應(yīng)用場景分析

    本文介紹了Vue2和Vue3中的Suspense用于處理異步請求的加載提示,以及如何在組件間實現(xiàn)動態(tài)加載,同時,Teleport技術(shù)展示了如何在DOM中靈活地控制組件的渲染位置,解決布局問題,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • vue3使用vue-count-to組件的實現(xiàn)

    vue3使用vue-count-to組件的實現(xiàn)

    這篇文章主要介紹了vue3使用vue-count-to組件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • vue 中swiper的使用教程

    vue 中swiper的使用教程

    本文通過實例代碼給大家介紹了vue 中swiper的使用,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • 解決Antd 里面的select 選擇框聯(lián)動觸發(fā)的問題

    解決Antd 里面的select 選擇框聯(lián)動觸發(fā)的問題

    這篇文章主要介紹了解決Antd 里面的select 選擇框聯(lián)動觸發(fā)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10

最新評論

上蔡县| 邵阳市| 昭通市| 当涂县| 南郑县| 修水县| 丹棱县| 洛川县| 佛学| 正蓝旗| 石家庄市| 西丰县| 德清县| 双江| 塔河县| 河北区| 丹凤县| 和硕县| 西平县| 兴海县| 阜新市| 锦屏县| 开鲁县| 太和县| 娄底市| 浦县| 衢州市| 抚州市| 东宁县| 仲巴县| 罗城| 句容市| 孟连| 温泉县| 台中市| 五峰| 普兰县| 金阳县| 夏津县| 南昌市| 汾阳市|