精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

借助webpack對項目進行分析優化

開發 前端
進入公司之后,接手的便是前人留下來的一個大項目。慶幸的是整個項目擁有完善的產品功能文檔,但是由于項目過于龐大,老舊。包含了打包過慢,冗余文件過多等諸多問題。因此在此篇文章中,我們介紹一下我是如何配合webpack一步步進行分析,將項目進行優化的。

[[226536]]

進入公司之后,接手的便是前人留下來的一個大項目。慶幸的是整個項目擁有完善的產品功能文檔,但是由于項目過于龐大,老舊。包含了打包過慢,冗余文件過多等諸多問題。想要快速的解決這些問題,想要完全把功能重構一遍的話,成本太高了。一個一個文件來過,時間成本也比較大。因此在此篇文章中,我們介紹一下我是如何配合webpack一步步進行分析,將項目進行優化的。

同時我針對思路封裝了一個webpack-unused-files,用于查找項目中的冗余文件,歡迎試用并star。

問題

首先,我們先大致看下我們都有什么問題,然后一步步進行解決

  • 項目頻繁進行修改,冗余文件過多
  • 部分第三方依賴濫用,想去除但是不知道在哪個文件中。或沒用,但是遺留在package.json里,
  • 項目龐大,打包的結果過大,時間過長

刪除冗余文件

由于項目的頻繁改動,有很多文件已經不被使用并且沒有被刪除。由于項目的不斷擴大,只會影響我們定位功能和問題的速度,因此對冗余文件進行清理,是很重要的。但是我們單憑肉眼很難識別哪個文件是否被依賴的,因此還要通過webpack來解決。

1.獲取項目依賴的所有文件

我們來看一下webpack的輸出文件格式: 

  1. {  
  2.   ...  
  3.   chunks: [{  
  4.     name'chunk-name',  
  5.     modules: [  
  6.       // 每個chunk中所有的依賴文件  
  7.     ]  
  8.   }]  
  9.   ...  

所以說,根據這個stats.json,我們可以拿到在整個項目中拿到的所有項目文件: 

  1. /**  
  2.  * 查詢依賴的模塊  
  3.  */  
  4. function findSrcModules () {  
  5.   return new Promise((resolve, reject) => {  
  6.     fs.readFile(statPath, (err, data) => {  
  7.       if (err) return  
  8.       const json = JSON.parse(data)  
  9.       const assetsList = json.chunks  
  10.       let ret = []  
  11.       // 拿到所有chunk的所有依賴文件  
  12.       assetsList.forEach(chunk => {  
  13.         const modules = chunk.modules.map(item => item.name)  
  14.         ret = ret.concat(modules)  
  15.       })  
  16.       // 去除node_modules中的文件  
  17.       ret = ret.filter(item => item.indexOf('node_modules') < 0)  
  18.       resolve(ret)  
  19.     })  
  20.   })  

通過這一步,我們可以拿到項目中,所有打包依賴的文件。

2.獲取項目中所有的文件

通過glob,我們可以獲取所有的文件: 

  1. function getAllFilesInSrc () {  
  2.   const pattern = './src/**'  
  3.   return new Promise((resolve, reject) => {  
  4.     glob(pattern, {  
  5.       nodir: true  
  6.     }, (err, files) => {  
  7.       const ret = files.map(item => {  
  8.         return item.replace('./src''.')  
  9.       })  
  10.       resolve(ret)  
  11.     })  
  12.   })  

3.將兩個文件數組進行對比,然后進行刪除等操作:

將兩個數組進行對比,沒有出現在依賴中的文件,就是冗余文件。我們可以一鍵刪除 

  1. findSrcModules().then(ret => {  
  2.   getAllFilesInSrc().then(allFiles => {  
  3.     const unUsed = allFiles.filter(item => {  
  4.       return ret.indexOf(item) < 0  
  5.     })  
  6.     const join = p => path.join('./src', p)  
  7.  
  8.     unUsed.forEach(file => {  
  9.       shelljs.rm(join(file))  
  10.     })  
  11.   })  
  12. }) 

分析第三方依賴

根據上述冗余文件的思路,我們同樣可以對第三方依賴進行處理,大致思路如下

  • 獲取所有包含node_modules的依賴
  • 將文件名進行截取、去重。獲取到所有的依賴
  • 與package.json進行對比,拿到沒有使用的依賴
  • 將對比結果進行分析,將不想使用的依賴保存下來
  • 再次查找stat.json,查找該依賴的reson字段,獲取再哪里引用了該依賴,進行輸出
  • 將依賴進行手動替換、刪除等操作

可以說,拿到了所有依賴及依賴關系,我們可以很靈活的對其進行處理,拿到我們想要的結果。

該功能后續也會更新到webpack-unused-files中去。

優化打包大小

讓人震驚的是,整個項目由于種種原因,打包后的大小有近20M的大小!雖然并不是TO C項目,并且針對頁面進行了代碼拆分和懶加載,但是作為一個“合格的前端”,這種現象是一定要修改的(沒錯!)。該如何下手呢?一個個的翻代碼,看看我們都引用了什么大依賴,看哪些項目過大未免太復雜了。我們看看webpack給我嗎提供了什么方案:

1.展示打包結果

我們知道,在webpack打包結束后,會自動在控制臺顯示打包結果。同時,他也提供了輸出依賴及大小的功能,我們執行以下參數, 便可將所有的依賴進行展示,并且看到他們的大小了。

  1. webpack --display-modules --sort-modules-by size 

結果類似這樣: 

我們可以很快的定位到排名前幾的js文件或者第三方依賴,決定該如何對其進行處置。

2.可視化分析依賴

webpack提供了一個功能,將打包的所有依賴文件以及關系,以json格式進行輸出: 

  1. webpack --profile --json > stats.json 

這是我們整篇文章的一個基礎,很多人基于此封裝了不少可視化分析的工具,可以直觀的看到各個

文件、chunk之間的依賴關系以及大小等,快速定位到大文件、大模塊

webpack analyse 

webpack chart 

3.優化方案

通過以上兩種方法,我們可以很好的對內容文件和依賴進行定位和分析,針對打包大小的優化方案網上已經有很多了,在此不再進行贅述,提供幾個思路及參考:

優化打包時間

針對打包時間的優化的文章其實也很多了,我們在此僅提供一些思路。我們主要提一點,通過構建會發現,項目中引用了大量的svg圖標以及國旗圖標,每次在靜態資源處理中,打包時間就會變的特別慢。

我們在項目中使用的svg-sprite-loader,自動將各個svg圖標進行svg-spirte。但是我們知道,這些圖標一旦引用,我們很少進行修改。尤其是像國旗圖標這種,但是每次構建我們都需要進行重復打包。因此,我們可以提前把這些圖標進行svg-sprite。推薦一個網站,將各種svg圖標提前進行sprite并自動進行引用:

iconmoon

日常打包時間優化點

  • externals 避免打包大的第三方依賴
  • dll-plugin 預打包第三方依賴
  • happypack 多進程處理,緩存
  • 緩存與增量構建
    • babel-loader?cacheDirectory
    • webpack cache:true
  • 減少構建搜索或編譯路徑 alias resolve
  • 具象打包的范圍 include exclude

總結

通過對webpack輸出依賴關系的json的分析,我們可以直觀的拿到以下數據:

  • 所有依賴文件及其大小
  • 每個依賴文件是被哪些文件引用的
  • 項目依賴的第三方依賴

通過這些數據,我們可以很方便的對現有項目進行優化。

生命不息,倒騰不止。讓我們對所有的惡心代碼說再見!  

原文鏈接:http://callmedadaxin.github.io/2018/04/13/analyse-project-with-webpack/

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2023-01-30 08:30:09

Tomcat性能優化

2021-05-09 22:48:40

SQL數據庫變量

2020-09-19 21:26:56

webpack

2023-07-13 11:24:14

SQL優化賦值

2022-03-10 09:00:42

webpack配置項檢驗庫函數

2009-01-06 09:23:00

VLAN網絡管理

2023-02-26 01:00:12

索引優化慢查詢

2017-07-28 11:31:59

iOS結構優化項目

2010-05-17 17:09:29

Mysql LIMIT

2019-03-15 15:00:49

Webpack構建速度前端

2010-05-20 14:42:02

MySQL數據

2011-04-14 09:05:07

ExcelMySQL數據

2010-01-28 14:04:35

C++鏈表

2010-02-23 13:33:49

Python測試套件

2023-05-05 19:16:22

Python數據清洗

2017-07-11 15:50:11

前端webpack2優化

2021-09-06 06:45:06

Webpack優化MindMaster

2009-12-04 09:32:00

Web Setup P

2010-04-19 17:09:30

Oracle sql

2016-09-13 19:51:01

移動應用圖片流量優化
點贊
收藏

51CTO技術棧公眾號

91麻豆国产精品久久| vam成人资源在线观看| 26uuu亚洲| 国产精品一区二区性色av| 亚洲欧美精品aaaaaa片| 欧美影院精品| 91成人免费在线视频| 26uuu成人| 同心难改在线观看| 美女爽到高潮91| 久久久爽爽爽美女图片| 国产熟女一区二区| 最新国产一区二区| 欧美日韩一区二区三区四区五区| 日韩极品视频在线观看| av网站在线免费播放| 成人免费精品视频| 国产精品久久久av| 国产一区二区三区影院| 欧美国产一级| 亚洲欧美一区二区三区在线| 极品人妻一区二区| www.久久| 一本到三区不卡视频| 欧美日韩视频免费| 麻豆视频在线| 国产精品女同一区二区三区| 久久久婷婷一区二区三区不卡| 国产免费福利视频| 米奇777在线欧美播放| 久久久久久久国产精品视频| 午夜精品一区二区三级视频| 欧美久久综合网| 日韩精品欧美激情| 男女一区二区三区| 99久久香蕉| 美腿丝袜在线亚洲一区| 久久全国免费视频| 激情四射综合网| 亚洲国产日韩欧美在线| 永久免费毛片在线播放不卡| 丰腴饱满的极品熟妇| 亚欧洲精品视频在线观看| 日韩欧美国产一区二区三区| 国产精品第13页| 国产三区精品| 囯产精品久久久久久| 国产一区二区三区高清播放| 成人国产在线激情| 亚洲视频一区在线播放| 日本美女一区二区| 国产精品日韩在线观看| 最近国语视频在线观看免费播放| 日日夜夜一区二区| 日本视频久久久| 亚洲国产精品无码久久久| 丝袜诱惑制服诱惑色一区在线观看 | 女人香蕉久久**毛片精品| 精品国产依人香蕉在线精品| 欧美日韩午夜视频| 欧美久久视频| 久久人91精品久久久久久不卡| 久久久久久久伊人| 午夜在线视频观看日韩17c| 欧美在线视频网站| 国产成人麻豆免费观看| 美女视频黄频大全不卡视频在线播放 | 午夜免费激情视频| 一区二区亚洲精品| 欧美自拍大量在线观看| 中文字幕免费观看视频| 国产呦萝稀缺另类资源| 国产精品一区二区三区四区五区 | 97人妻精品一区二区三区视频 | 国产肉体xxxx裸体784大胆| 夜色77av精品影院| 色噜噜亚洲精品中文字幕| 国语对白在线播放| 日韩亚洲国产欧美| 国产精品成人v| 国产精品一二三四五区| 不卡视频免费播放| 日韩欧美在线一区二区| 国产丝袜在线| 欧美视频一区二区三区…| 欧美大尺度做爰床戏| 综合欧美亚洲| 一个人看的www久久| 欧美日韩一级在线观看| 国产精品大片| 欧亚精品中文字幕| 国产乱人乱偷精品视频| 91美女在线视频| 中文字幕久精品免| 久操av在线| 在线观看av不卡| 亚洲少妇一区二区三区| 清纯唯美亚洲综合一区| 久久久久久久久国产精品| 久久这里只有精品9| 国产91精品精华液一区二区三区 | 久久资源综合| 日韩在线视频线视频免费网站| 国产a免费视频| 久久这里只有| 国产精品一区二区三区不卡| 欧美私人网站| 日本精品一区二区三区高清| 久久久久无码国产精品一区李宗瑞| 精品国产中文字幕第一页| 欧美国产在线电影| 91极品身材尤物theporn| 91一区一区三区| 黄色一级片国产| 日韩精品第二页| 精品偷拍各种wc美女嘘嘘| 欧美激情国产精品免费| 精品午夜久久福利影院| 久久综合毛片| av在线小说| 国产精品成人一区二区艾草| 99热亚洲精品| 中文字幕在线观看网站| 在线视频观看一区| theav精尽人亡av| 日韩一区二区在线看| 亚洲xxx视频| 国际av在线| 亚洲.国产.中文慕字在线| 久热精品在线播放| 伊人久久大香线蕉| 久久免费视频网| 国产91视频在线| 国产成人l区| 亚洲免费在线视频一区 二区| 亚洲视频在线观看一区二区三区| 欧美日韩导航| 97久久精品国产| 成人小说亚洲一区二区三区 | 一区二区精品免费| 美女日韩在线中文字幕| 久久亚洲午夜电影| 午夜免费视频网站| 国产欧美一区二区三区精品观看| 7m第一福利500精品视频| 亚洲精品911| 亚洲激情欧美激情| 图片区偷拍区小说区| 亚洲一区二区天堂| 国产欧美日韩亚州综合| 国产a级片免费观看| 国产日产精品一区二区三区四区的观看方式 | 国产91在线播放| 青梅竹马是消防员在线| 色综合久久中文综合久久牛| 日韩中文在线不卡| 国产精品久久久久精| 亚洲视频一区在线| 尤物网站在线看| 国内精品久久久久久久影视蜜臀 | 成人在线视频一区| 日日噜噜噜夜夜爽爽| 大胆国模一区二区三区| 两个人的视频www国产精品| 国产喷水福利在线视频| 一区二区三区日韩精品视频| 91精品又粗又猛又爽| 亚洲精品人人| 欧美自拍资源在线| 四虎精品一区二区免费| 欧美激情精品久久久久| 婷婷在线观看视频| 欧美视频精品在线观看| 全程偷拍露脸中年夫妇| av一区二区三区在线| 亚洲爆乳无码专区| 99精品视频精品精品视频| 999国产视频| 男人皇宫亚洲男人2020| 久久视频这里只有精品| 日本xxxxwww| 欧美丝袜丝交足nylons| 久热精品在线观看| 国产亚洲福利社区一区| aaaaaaaa毛片| 久久精品女人天堂| 91精品国产吴梦梦| 九九亚洲精品| 99re6在线| 国产精品扒开腿做爽爽爽视频软件| 久久精品成人欧美大片| 艳母动漫在线看| 91麻豆精品国产91久久久资源速度| 国产真实的和子乱拍在线观看| 亚洲国产岛国毛片在线| 国产视频精品视频| 老司机精品视频导航| 人妻久久久一区二区三区| 欧美日韩国产综合在线| 精人妻无码一区二区三区| 中文字幕日韩av资源站| 水蜜桃av无码| 国产综合成人久久大片91| 国产亚洲欧美在线视频| 亚洲有吗中文字幕| 日本精品国语自产拍在线观看| 久久久久九九精品影院| 国产成人精品最新| 高清电影在线观看免费| 中文字幕日韩av| 无码国产精品一区二区免费16| 51午夜精品国产| 波多野结衣mp4| 亚洲高清免费视频| 男人在线观看视频| 欧美经典一区二区| 免费成人深夜夜行p站| 粉嫩欧美一区二区三区高清影视| 亚洲一级免费观看| 久久性天堂网| 久久网站免费视频| 亚洲精品孕妇| 国产成人永久免费视频| 成人无号精品一区二区三区| 免费在线成人av电影| 国产精品对白| 99在线观看| 国产一区二区久久久久| 91精品国产综合久久香蕉| av免费在线一区| 日韩av不卡电影| 国产不卡网站| 欧美一区二区三区…… | 国产精品成人在线观看| 天天摸日日摸狠狠添| 久久久精品人体av艺术| 手机av免费看| 久久久久国产免费免费| 国产免费看av| 久久久久久一级片| 中文字幕被公侵犯的漂亮人妻| 26uuu成人网一区二区三区| 少妇激情一区二区三区视频| 成人天堂资源www在线| 国产a√精品区二区三区四区| 成人在线一区二区三区| 欧美xxxxx精品| ww亚洲ww在线观看国产| 白白色免费视频| 国产欧美日韩另类一区| 狂野欧美性猛交| 亚洲同性gay激情无套| 婷婷在线精品视频| 亚洲亚洲精品在线观看| 国产a∨精品一区二区三区仙踪林| 欧美日韩另类字幕中文| 九九久久久久久| 久国产精品韩国三级视频| 中文字幕一区久久| 国产69精品一区二区亚洲孕妇| 在线播放av网址| 91在线播放网址| 少妇太紧太爽又黄又硬又爽小说| 中文字幕一区二区三区av| 亚洲成人生活片| 精品国产精品自拍| 成人毛片一区二区三区| 欧美日本高清视频在线观看| 国产高清视频免费观看| 亚洲精品电影网| 青青草娱乐在线| 日韩视频精品在线| 99热99re6国产在线播放| 日韩av大片免费看| 国模大尺度视频一区二区| 国产欧美综合精品一区二区| 久久99视频| 九九久久九九久久| 另类激情亚洲| 91丝袜超薄交口足| 91色在线porny| 91香蕉视频污在线观看| 久久综合九色综合欧美就去吻| 97在线观看免费视频| 亚洲激情自拍视频| 日本中文字幕在线观看视频| 91精品国产黑色紧身裤美女| 亚洲欧美一区二区三| 日韩在线不卡视频| 午夜欧美激情| 亚洲一区二区三区在线视频| 色橹橹欧美在线观看视频高清 | 亚洲视频一二| 免费看污污网站| 成人18视频在线播放| 殴美一级黄色片| 欧美午夜片欧美片在线观看| 国产毛片一区二区三区va在线| 日韩精品亚洲视频| av网站导航在线观看免费| 日韩免费视频在线观看| 丁香婷婷成人| 欧美aaa在线观看| 丝瓜av网站精品一区二区| 亚洲v在线观看| 中文字幕日本不卡| 国内av在线播放| 精品亚洲男同gayvideo网站 | 第一会所亚洲原创| 18禁免费无码无遮挡不卡网站 | 美女洗澡无遮挡| 一区二区三区四区视频精品免费 | 天堂av在线网站| 91一区二区在线观看| 国产真实夫妇交换视频| 日韩区在线观看| 麻豆影院在线| 国产精品久久久av久久久| 天堂综合网久久| 青青草国产精品视频| 国产成人激情av| 天天综合天天做| 欧美精品丝袜久久久中文字幕| 日本v片在线免费观看| 97视频在线观看成人| 1769国产精品视频| 国产激情片在线观看| 韩国三级电影一区二区| 亚洲熟女少妇一区二区| 欧美系列在线观看| 成人综合影院| 国产999在线观看| 久久综合欧美| 精品www久久久久奶水| 91亚洲永久精品| 99热在线观看免费精品| 日韩成人黄色av| 日韩精品美女| 欧美国产综合视频| 亚洲尤物在线| 亚洲理论片在线观看| 色哟哟欧美精品| 风间由美一区| 国产欧美日韩最新| 999国产精品视频| 99999精品| 亚洲一区二区三区爽爽爽爽爽 | 宅男66日本亚洲欧美视频| 欧美与亚洲与日本直播| 性欧美精品一区二区三区在线播放| 肉色丝袜一区二区| 三上悠亚在线观看视频| 日韩午夜电影在线观看| 久久久久黄久久免费漫画| 国产一区二区三区无遮挡 | 在线观看av免费观看| 亚洲日本丝袜连裤袜办公室| www.国产精品视频| 久久久久久久久久久91| 亲子伦视频一区二区三区| 欧美一级片中文字幕| 中文字幕乱码一区二区免费| 国产又黄又粗又长| 久久久久久69| 九九久久电影| 今天免费高清在线观看国语| 欧美综合社区国产| 正在播放一区| 国产成人自拍在线| 日韩精品成人一区| 亚洲欧美国产va在线影院| 中文字幕日本一区二区| 综合色婷婷一区二区亚洲欧美国产| 国产福利一区在线| 国产99久久久| 日韩中文娱乐网| 国产精品色在线网站| 成人中文字幕av| 韩国成人动漫| 中文字幕一区二区三区有限公司| 国产成人午夜精品影院观看视频| 日韩av男人天堂| 最近中文字幕日韩精品| 综合激情网...| 艹b视频在线观看| 亚洲影院免费观看| 成年人在线免费观看| 91文字幕巨乱亚洲香蕉| 久久久久久色| 久久久久久久久久一区二区三区| 亚洲欧美日韩一区二区在线| av在线国产精品| 久久综合久久色| 一区二区三区四区国产精品| 黄色在线视频观看网站| 国产精品jizz视频| 美女www一区二区| 美日韩一二三区| 色综合久久久久久中文网| 波多野结衣的一区二区三区|