webpack-bundle-analyzer分析SPA應(yīng)用

介紹?webpack-bundle-analyzer 這個(gè)插件來分析SPA應(yīng)用。

使用

npm install --save-dev webpack-bundle-analyzer

在webpack的plugins中配置: new BundleAnalyzerPlugin()

在package.json 中增加:?"analyz":?"NODE_ENV=production npm_config_report=true npm run build"

npm run?analyz? 后會自動打開?http://127.0.0.1:8888/ 砌溺,視圖如下:



vendor包屬于工程基礎(chǔ)包籍嘹,里面包含了node_modules下的依賴模塊季眷,因?yàn)檫@些依賴是比較穩(wěn)定的,所以可以配合ETag做http層的緩存。

use-repeat包屬于業(yè)務(wù)基礎(chǔ)包甜癞,里面包含業(yè)務(wù)場景常用到依賴和工具纤垂,打入此包的前提:在應(yīng)用中重復(fù)使用大于等于3次矾策。

為什么需要分出 工程基礎(chǔ)包 和 業(yè)務(wù)基礎(chǔ)包?

工程基礎(chǔ)包是整個(gè)工程常用的node_modules的依賴洒忧,這里的內(nèi)容不會經(jīng)常變動蝴韭,所以單獨(dú)抽出來并且搭配ETag來實(shí)現(xiàn)緩存是常用的spa 優(yōu)化方案。

業(yè)務(wù)基礎(chǔ)包大部分不是node_modules的模塊熙侍,例如我們在common中存放的一些基礎(chǔ)組件榄鉴,其次是一些三方的組件庫(這些是在node_modules中的,但是因?yàn)榻?jīng)常變動所以不適宜放在vendor中)蛉抓。如果業(yè)務(wù)基礎(chǔ)包不進(jìn)行提取會導(dǎo)致單chunk包重復(fù)打包相同模塊庆尘,也增加了單chunk包的體積。

對應(yīng)的webpack配置如下:

????// 工程基礎(chǔ)包

? ? ? new webpack.optimize.CommonsChunkPlugin({

? ? ? ? ????name: 'vendor',

? ? ? ????? minChunks: function (module, count) {

? ? ? ? ? return (module.resource && /\.js$/.test(module.resource) && ????????????????????module.resource.indexOf(path.join(__dirname, '../node_modules')) === 0)

? ? ? ? }

? ? ? })


????// 業(yè)務(wù)基礎(chǔ)包

? ? ? new webpack

? ? ? .optimize

? ? ? .CommonsChunkPlugin({

? ? ? ? ????async: 'use-repeat',

? ? ? ? ????minChunks: (module, count) => (count >=3)

? ? ? })


到此還不算結(jié)束巷送,因?yàn)槿绻浜螮Tag做緩存驶忌,需要保證打出來包hash不能改變,下面是常見的output 配置:

output: {

? ? path: path.join(__dirname, '../dist'),

? ? filename: '[name]-[chunkhash].js',

? ? chunkFilename: '[name]-[chunkhash].chunk.js'

? }

hash 是 build-specific ,即每次編譯都不同——適用于開發(fā)階段

chunkhash 是 chunk-specific付魔,是根據(jù)每個(gè) chunk 的內(nèi)容計(jì)算出的 hash——適用于生產(chǎn)

使用chunkhash就保險(xiǎn)了嗎聊品?

這里涉及到三個(gè)問題:1.webpack運(yùn)行文件 2.module id? 3.chunk id , 解決方案如下:

????// 將webpack運(yùn)行文件抽離出來几苍,不然每次打包運(yùn)營文件的hash都會改變

? new webpack.optimize.CommonsChunkPlugin({

? ? ?name: 'runtime'

? })

// 固定module id

?new webpack.HashedModuleIdsPlugin({

? ? ? hashFunction: 'md5',

? ? ? hashDigest: 'hex',

? ? ? hashDigestLength: 8

?})


// 固定chunk id

new webpack.NamedChunksPlugin((chunk) => {

? ? ? ? // 解決異步模塊打包的問題

? ? ? ? if (chunk.name) {

? ? ? ? ? return chunk.name;

? ? ? ? }

? ? ? ? return chunk.modules.map(m => path.relative(m.context, m.request)).join("_");

})


相關(guān)文章:https://zhuanlan.zhihu.com/p/34110535

最后不得不吐槽下 簡書 的編輯功能真的好難用翻屈,不是不想多寫一些思考,是真的難用∑薨樱現(xiàn)在基本每天的思考和總結(jié)都會放到語雀上伸眶,簡書是想起來回來更新一下。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刽宪,一起剝皮案震驚了整個(gè)濱河市厘贼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌圣拄,老刑警劉巖嘴秸,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異售担,居然都是意外死亡赁遗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門族铆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岩四,“玉大人,你說我怎么就攤上這事哥攘∑驶停” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵逝淹,是天一觀的道長耕姊。 經(jīng)常有香客問我,道長栅葡,這世上最難降的妖魔是什么茉兰? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮欣簇,結(jié)果婚禮上规脸,老公的妹妹穿的比我還像新娘。我一直安慰自己熊咽,他們只是感情好莫鸭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著横殴,像睡著了一般被因。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天梨与,我揣著相機(jī)與錄音堕花,去河邊找鬼。 笑死蛋欣,一個(gè)胖子當(dāng)著我的面吹牛航徙,可吹牛的內(nèi)容都是我干的如贷。 我是一名探鬼主播陷虎,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杠袱!你這毒婦竟也來了尚猿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤楣富,失蹤者是張志新(化名)和其女友劉穎凿掂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纹蝴,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庄萎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了塘安。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糠涛。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兼犯,靈堂內(nèi)的尸體忽然破棺而出忍捡,到底是詐尸還是另有隱情,我是刑警寧澤切黔,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布砸脊,位于F島的核電站,受9級特大地震影響纬霞,放射性物質(zhì)發(fā)生泄漏凌埂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一诗芜、第九天 我趴在偏房一處隱蔽的房頂上張望瞳抓。 院中可真熱鬧,春花似錦绢陌、人聲如沸挨下。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臭笆。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間愁铺,已是汗流浹背鹰霍。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茵乱,地道東北人茂洒。 一個(gè)月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像瓶竭,于是被迫代替她去往敵國和親督勺。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容