一次webpack優(yōu)化

一缺猛、背景:

技術棧:ant-design-vue中姜、vue、vuex薯演、vue-router
最開始的優(yōu)化手段只有bable plugin的按需加載撞芍。

下圖是最開始的打包結果


initial.png

二、優(yōu)化開發(fā)時打包速度

開發(fā)時熱更新時跨扮,隨著項目的變大序无,每次保存一下可能都要等一會兒。解決的辦法就是好港,多進程愉镰、讀緩存米罚。與之對應的是happyPack和dll钧汹。本想用他倆,突然發(fā)現(xiàn)個更快的東西录择,而且聽說將被webpack5內置拔莱?

  • hard-source-webpack-plugin

這個插件其實也就是讀取緩存碗降,第一次構建是正常速度,第二次能構建能讀取緩存塘秦,提高90%的速度讼渊,對于開發(fā)過程很友好。

config.plugins.push(
    new HardSourceWebpackPlugin()
);

使用的是默認的配置尊剔,會把緩存寫在node_modules里爪幻。

第一次構建寫緩存

write.png

第二次構建讀緩存

read.png

也不知道為啥我的webpack沒有時間顯示,反正速度肉眼可見快了P胛蟆挨稿!
這步?jīng)]有縮小包體積,就不放圖了京痢。

三奶甘、壓縮js

之前也在別的項目里見過,什么uglifyJs plugin祭椰,看webpack的文檔臭家,發(fā)現(xiàn)更推薦terser plugin,因為uglify-js不支持es6方淤, uglify-es已經(jīng)不維護了钉赁。

minimizer: [
     new TerserPlugin({
          terserOptions: {
              compress: {
                     /* eslint-disable babel/camelcase */
                     drop_console: true,
                     module: true,
                     warnings: true
              }
          }
    }),
],

壓完之后,好吧有點變化~


step2.png

四携茂、開始包分析

  • webpack-bundle-analyzer

這個插件不多說了橄霉。下面這張圖是目前各個包的大小情況。


analysis1.png

1邑蒋、moment優(yōu)化

利用weibpack的IgnorePlugin姓蜂,忽略多語言的目錄,單獨引入某個語言的依賴医吊。

// webpack配置
config
            .plugin('ignore')
            .use(IgnorePlugin, [/\.\/locale/, /moment/]);

// 單獨引入
import moment from 'moment';
import 'moment/locale/zh-cn';
moment.locale('zh-CN');

之后moment大概小了一半

analysis2.png
step4.png

2钱慢、分包

splitChunks: {
       chunks: 'async',
       minSize: 30000,
       maxSize: 210000,
       cacheGroups: {
           'ant-design-vue': {
                 test: /node_modules[\\/]ant-design-vue/,
                 chunks: 'all',
                 priority: 20,
                 name: true
            },
            'default': {
                minChunks: 2,
                priority: -20,
                reuseExistingChunk: true
            }
    }
}

經(jīng)過嘗試,我項目里主要起作用的是default包的配置卿堂,把使用2次以上的包拆開束莫,重復利用已有的包。


analysis3.png

也是小了一些的

step5.png

3草描、繼續(xù)查看大包

左上角的@ant-design/icons也太大了览绿,500多k,壓縮后還有100多k穗慕,但其實我只用了其中的幾個icon饿敲,antd卻把它全量引入了,經(jīng)過搜索逛绵,在github的issue里找到了解決辦法怀各。戳這里倔韭。

主要是利用webpack的別名,將ant-design-vue源碼里引入icon的路徑由@ant-design/icons/lib/dist換成你自己utils下的icon瓢对,這樣就可以做到按需引入寿酌。

這樣不方便的點是,單獨引入的icon和antd組件內的icon都要在uitls/antdIcon.js里單獨引入硕蛹。

// src/utils/antdIcon.js
// 關閉按鈕
export {
    default as CloseOutline
} from '@ant-design/icons/lib/outline/CloseOutline';
// webpack配置
config.resolve.alias
            .set('@ant-design/icons/lib/dist$', path.resolve(__dirname, './src/utils/antdIcon.js'));

這樣打包出來果然好了很多醇疼,縮小了0.5M !法焰?

analysis4.png

step6.png

至此第一階段的優(yōu)化結束了.....

參考

webpack優(yōu)化

辛辛苦苦學會的 webpack dll 配置僵腺,可能已經(jīng)過時了

antd icon 優(yōu)化

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市壶栋,隨后出現(xiàn)的幾起案子辰如,更是在濱河造成了極大的恐慌,老刑警劉巖贵试,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琉兜,死亡現(xiàn)場離奇詭異,居然都是意外死亡毙玻,警方通過查閱死者的電腦和手機豌蟋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桑滩,“玉大人梧疲,你說我怎么就攤上這事≡俗迹” “怎么了幌氮?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胁澳。 經(jīng)常有香客問我该互,道長,這世上最難降的妖魔是什么韭畸? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任宇智,我火速辦了婚禮,結果婚禮上胰丁,老公的妹妹穿的比我還像新娘随橘。我一直安慰自己,他們只是感情好锦庸,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布机蔗。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜒车。 梳的紋絲不亂的頭發(fā)上讳嘱,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天幔嗦,我揣著相機與錄音酿愧,去河邊找鬼。 笑死邀泉,一個胖子當著我的面吹牛嬉挡,可吹牛的內容都是我干的。 我是一名探鬼主播汇恤,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼庞钢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了因谎?” 一聲冷哼從身側響起基括,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎财岔,沒想到半個月后风皿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡匠璧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年桐款,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夷恍。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡魔眨,死狀恐怖,靈堂內的尸體忽然破棺而出酿雪,到底是詐尸還是另有隱情遏暴,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布指黎,位于F島的核電站拓挥,受9級特大地震影響,放射性物質發(fā)生泄漏袋励。R本人自食惡果不足惜侥啤,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茬故。 院中可真熱鬧盖灸,春花似錦、人聲如沸磺芭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至徙垫,卻和暖如春讥裤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姻报。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工己英, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吴旋。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓损肛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荣瑟。 傳聞我的和親對象是個殘疾皇子治拿,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345