精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

xxxwww国产| 亚洲伊人久久大香线蕉av| 国产精品九九九九九| 欧美日韩免费观看视频| 国产精品免费久久久久| 91精品免费| 国产午夜性春猛交ⅹxxx| 国内精品视频在线观看| 欧美一区二区三区在线视频| 老司机午夜免费福利视频| 色屁屁草草影院ccyycom| 日韩中文欧美在线| 久久91精品国产91久久跳| 无码精品一区二区三区在线播放| 国产福利亚洲| 午夜精品一区二区三区免费视频 | 岛国精品一区| 欧美性大战xxxxx久久久| 欧美成人三级电影在线| 欧美超级乱淫片喷水| 中文字幕一区二区人妻在线不卡| 疯狂欧洲av久久成人av电影 | 成年人看的毛片| 亚洲天天影视| 91亚洲精品久久久蜜桃网站 | 色婷婷av一区二区三区丝袜美腿| 在线播放日韩导航| 精品久久久久久无码国产| 超碰在线免费播放| 国产精品天天摸av网| 久久亚洲高清| 亚洲乱码精品久久久久..| 久久精品国产77777蜜臀| 青草成人免费视频| 六月丁香在线视频| 午夜激情一区| 日韩综合中文字幕| 91网站免费视频| 神马香蕉久久| 精品一区电影国产| 中国xxxx性xxxx产国| 久久精品国产成人av| 9色在线观看| 91色porny在线视频| 成人av电影免费| 国产三级第一页| 久久se精品一区二区| 国产精品久久久久国产a级| 亚洲图片在线视频| 丝袜美腿高跟呻吟高潮一区| 欧美主播福利视频| 精品国产一区二区三区四| 国产一区二区你懂的| 国内精品久久久久久| 91n在线视频| 欧美日韩激情| 中文字幕日韩av| 久久精品国产亚洲AV成人婷婷| 国产剧情一区| 尤物精品国产第一福利三区| 2019男人天堂| 日韩免费久久| 久久最新资源网| 国产这里有精品| 一区二区视频欧美| 午夜精品久久久久久久99黑人| 日本少妇久久久| 亚洲专区一区| 国产精品日本精品| 国产尤物在线观看| 国产成人自拍网| 国产在线一区二区三区播放| 头脑特工队2免费完整版在线观看 头脑特工队2在线播放 | 成人激情综合网站| 精品国产中文字幕| 国产h视频在线观看| 九色在线播放| 欧美经典三级视频一区二区三区| 日韩视频在线免费| 国产欧美在线播放| 中文字幕一区二区人妻电影| 视频一区视频二区中文| 国产va免费精品高清在线| 亚洲网站在线免费观看| 国产美女精品一区二区三区| 国产精品日韩一区二区| 欧美伦理影视网| 国产精品国产成人国产三级| 2022中文字幕| 希岛爱理一区二区三区av高清| 欧美色电影在线| wwwww在线观看| 久久99视频| 久久夜色精品国产欧美乱| 日韩 欧美 综合| 麻豆成人免费电影| 久久精品国产第一区二区三区最新章节| 撸视在线观看免费视频| 亚洲柠檬福利资源导航| 国产极品在线视频| **国产精品| 亚洲女人天堂av| 色婷婷在线视频观看| 国产一区二区三区的电影| 成人精品网站在线观看| 日韩av高清在线| 伊人色综合久久天天| 日本新janpanese乱熟| 一区二区三区在线资源| 夜夜爽夜夜爽精品视频| 丝袜美腿精品国产二区| 青青草精品在线视频| 久久在线精品| 国产精品国产三级国产专区53 | 最新中文字幕亚洲| 好吊操这里只有精品| 精品一区二区国语对白| 欧美精彩一区二区三区| 女人天堂av在线播放| 精品视频在线看| 毛片网站免费观看| 91久久视频| 91久久精品久久国产性色也91| 精品美女视频在线观看免费软件 | 国产内射老熟女aaaa∵| 久久久久久**毛片大全| 日韩五码在线观看| 中文字幕区一区二区三| 日韩视频在线一区| 黄色网址中文字幕| wwwwww.欧美系列| www.日本在线视频| 日韩在线精品强乱中文字幕| www.日韩免费| 96日本xxxxxⅹxxx17| 欧美国产精品一区| 日韩av手机版| jlzzjlzz亚洲女人| 国产精品678| 韩日视频在线| 色乱码一区二区三区88| 蜜臀av一区二区三区有限公司| 国精品一区二区三区| 亚洲伊人成综合成人网| 51xtv成人影院| 日韩欧美一区二区久久婷婷| 国产尤物在线播放| 国模大尺度一区二区三区| 亚洲视频一二三| 国产深夜男女无套内射| 美女主播精品视频一二三四| 亚洲激情在线播放| 尤物九九久久国产精品的分类| 久久久精品视频免费观看| 久久91精品久久久久久秒播| 亚洲日本精品| 国产aa精品| 久久成人精品视频| 亚洲乱码国产乱码精品精软件| 一区二区三区.www| 国产精品久久久久久亚洲色| 亚洲三级国产| 欧美成人dvd在线视频| 欧美www.| 日韩色av导航| 国产黄色片av| 亚洲大片一区二区三区| 久久久久国产精品区片区无码| av不卡在线| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 国产av 一区二区三区| 国产精品一区二区不卡| 草草视频在线免费观看| 久久av免费看| 亚洲jizzjizz日本少妇| aa级大片免费在线观看| 亚洲天堂免费视频| 国产露脸国语对白在线| 亚洲成在人线在线播放| 六月婷婷七月丁香| 韩国三级在线一区| 日韩免费视频播放| 日韩在线欧美| 国产精品成人一区二区三区| 欧美成人性网| 久99九色视频在线观看| 久香视频在线观看| 日韩欧美电影一区| 日韩国产成人在线| 亚洲不卡在线观看| 国产精品久久久久久成人| 国产91高潮流白浆在线麻豆| 男人天堂网视频| 影音先锋成人在线电影| 欧美精彩一区二区三区| 亚洲成人影音| 在线亚洲一区| 欧美精品久久久| 欧美日本三级| 国产高清在线不卡| 免费电影网站在线视频观看福利| 亚洲午夜久久久影院| 亚洲爱情岛论坛永久| 欧美伊人久久久久久久久影院| 丰满少妇高潮久久三区| 国产日产欧美一区二区视频| 亚洲热在线视频| 午夜在线精品偷拍| 人妻互换免费中文字幕| 日本一区二区在线看| 久久av免费一区| 91久久精品无嫩草影院| 国产精品午夜视频| 伊人网在线播放| 欧美极度另类性三渗透| 黄色成年人视频在线观看| 亚洲欧美中文字幕| 神马午夜在线观看| 欧美一级高清片| 中文字幕视频在线播放| 日韩欧美第一页| 亚欧洲精品在线视频| 亚洲欧美另类图片小说| 欧美成人另类视频| 久久精品视频一区| 亚洲欧美色图视频| 成人不卡免费av| 欧美性猛交xx| 国产精品一区二区久久不卡| 午夜一区二区视频| 捆绑变态av一区二区三区| mm1313亚洲国产精品无码试看| 一区二区久久| 青青草成人免费在线视频| 亚洲天堂成人| 免费极品av一视觉盛宴| 亚洲色偷精品一区二区三区| 我不卡影院28| 日韩一区二区三区免费看| 99精品视频99| 亚洲国产精品嫩草影院| 日韩高清dvd碟片| 国产精品久久久久久久午夜片| 欧美色图亚洲激情| 99精品久久只有精品| 日本少妇xxxx| 成人激情视频网站| 超碰caoprom| 99久久久久免费精品国产| 91传媒理伦片在线观看| 成人黄色av网站在线| 国产污在线观看| 91亚洲国产成人精品一区二三 | 蜜臀久久99精品久久久画质超高清 | 日本在线观看| 久久九九亚洲综合| 欧美性猛片xxxxx免费中国| 欧美黑人性生活视频| av资源网在线播放| 日本成人精品在线| 欧美与亚洲与日本直播| 国产精品稀缺呦系列在线| 日韩久久99| 97视频热人人精品| 黄色美女久久久| 欧美精品久久| 99精品在线观看| 日韩欧美猛交xxxxx无码| 99人久久精品视频最新地址| 欧美污视频网站| 蜜桃视频免费观看一区| 日韩精品aaa| 成人美女在线观看| 日本少妇xxxxx| 一区二区三区四区精品在线视频| 日本在线观看视频网站| 在线免费观看成人短视频| 91超薄丝袜肉丝一区二区| 日韩欧美不卡一区| 深夜福利视频在线免费观看| 中文字幕视频一区二区在线有码| 岛国成人毛片| 欧美与欧洲交xxxx免费观看| 九九九精品视频| 国产99视频精品免费视频36| 免费视频国产一区| 免费观看国产视频在线| 在线视频欧美性高潮| 国产免费黄色网址| 精品欧美一区二区三区精品久久| 天天操天天操天天操| 国产一区二区三区免费视频| 粗大黑人巨茎大战欧美成人| 91精品国产亚洲| 24小时成人在线视频| 久久这里精品国产99丫e6| 91一区二区| 男人揉女人奶房视频60分| 久久精品国产亚洲一区二区三区| 亚洲乱妇老熟女爽到高潮的片 | 中文字幕av久久爽一区| 亚洲女人的天堂| 九九热最新视频| 精品国精品国产| av在线首页| 91高清在线免费观看| 999精品视频在线观看| 美女三级99| 亚洲午夜视频| av免费一区二区| 久久伊人中文字幕| 欧美日韩精品亚洲精品| 欧美三级视频在线播放| 天堂成人在线| 欧美国产在线电影| crdy在线观看欧美| 少妇精品久久久久久久久久| 亚洲黄色免费| 日韩欧美中文在线视频| 欧美激情综合在线| 天堂а√在线中文在线新版| 欧美成人猛片aaaaaaa| 拍真实国产伦偷精品| 国产成人极品视频| 欧美网色网址| 免费毛片网站在线观看| 国产成人av电影免费在线观看| 久久精品色妇熟妇丰满人妻| 一本久久a久久精品亚洲| 欧美性猛交 xxxx| 欧美国产日韩一区| 亚洲精品在线播放| 女同性恋一区二区| 久久国产精品99久久人人澡| 69视频在线观看免费| 一本一道久久a久久精品综合蜜臀| 欧美性猛交 xxxx| 久久久久中文字幕| 99久久免费精品国产72精品九九| 国产精品一二三在线观看| 黄页网站大全一区二区| 亚洲少妇xxx| 欧美精选午夜久久久乱码6080| jizz在线观看视频| 国产精品三级网站| 欧美3p视频| 九九九九九国产| 亚洲人123区| www.av网站| 欧美极品欧美精品欧美视频| 日韩三级av高清片| a级免费在线观看| 99精品视频中文字幕| 欧美日韩综合在线观看| 亚洲精品自在久久| 超薄肉色丝袜脚交一区二区| 先锋影音日韩| 韩国av一区二区三区在线观看| 黄色录像免费观看| 日韩久久久精品| 精品丝袜在线| 日韩av电影免费在线| 老司机免费视频一区二区三区| 99久久久免费精品| 亚洲国产精品va在线看黑人| 亚洲欧洲高清| 亚洲精品一区二区三区蜜桃久 | 亚洲啪av永久无码精品放毛片| 亚洲成人第一页| 色综合成人av| 91精品国产综合久久男男| 欧美一区影院| 午夜久久久久久久| 欧美日韩国产首页在线观看| 97caopor国产在线视频| 国产在线一区二区三区四区| 日韩avvvv在线播放| 紧身裙女教师波多野结衣| 亚洲精品在线免费播放| 日韩高清不卡| 激情视频小说图片| 91浏览器在线视频| 91丨九色丨蝌蚪丨对白| 久久久久在线观看| 久久激情电影| 日本不卡视频一区| 欧美视频中文一区二区三区在线观看| 91三级在线| 日本不卡一区二区三区视频| 国内精品免费在线观看| 天天做天天爱夜夜爽| 久久精品视频导航| 一道在线中文一区二区三区| xxx国产在线观看| 午夜一区二区三区视频| 天堂中文8资源在线8| 久久国产精品 国产精品| 国产真实乱子伦精品视频| 欧美黑人一区二区| 欧美国产日韩视频|