webpack4.0 基礎(chǔ)

前端構(gòu)建工具對比

作用:

  1. 把源代碼轉(zhuǎn)換成發(fā)布到線上的可執(zhí)行 JS CSS HTML 代碼;
  2. 代碼轉(zhuǎn)換谒拴、文件優(yōu)化、代碼分割英上、模塊合并、自動刷新惭聂、自動發(fā)布、代碼校驗

對比:
Grunt辜纲、Gulp:集成度不高,沒法開箱即用
Fis3:官方團隊不再維護耕腾;也不支持最新的node
Rollup:生態(tài)鏈、功能都不夠完善扫俺;不支持 Code Spliting
Webpack:采用模塊化開發(fā)的項目;社區(qū)活躍狼纬、配置靈活、插件化擴展疗琉、官方更新迭代快

webpack4.0 基礎(chǔ)

  1. 核心:entry、output涛癌、mode、loaders拳话、plugins
  2. 解析圖片种吸、字體弃衍;解析Css坚俗、Less、Sass
  3. 文件指紋策略:hash猖败、contenthash、chunkhash
  4. 代碼壓縮
核心

entry: 打包的入口艺糜。單入口是一個字符串;多入口是一個對象

output:打包的輸出破停。單入口/多入口配置:通過占位符確保文件名稱的唯一

image.png

mode:用來指定當前的構(gòu)建環(huán)境是:production尉剩、development真慢、none理茎,默認是production管嬉。設(shè)置 mode 可以根據(jù)不同環(huán)境园爷,來加載 webpack 內(nèi)置的函數(shù)
image.png

loaders:webpack 只支持 JS 和 JSON 文件類型式撼,對于不支持的文件類型需要通過 Loaders 轉(zhuǎn)化成有效的模塊;
loaders 本身是一個函數(shù)著隆,接受源文件作為參數(shù),返回轉(zhuǎn)換的結(jié)果
常用的 Loaders:babel-loader美浦、css-loader、less-loader浦辨、ts-loader、file-loader流酬、url-loader、raw-loader旦装、thread-loader

plugins:用于 bundle 文件的優(yōu)化、資源管理和環(huán)境變量注入阴绢;作用于整個構(gòu)建過程艰躺;loaders 無法做的事情可以通過 plugins 完成
常見的Plugins:CommonsChunkPlugin呻袭、CleanWebpackPlugin腺兴、ExtractTextWebpackPlugin、CopyWebpackPlugin含长、HtmlWebpackPlugin、UglifyjsWebpackPlugin纷纫、ZipWebpackPlugin

解析css、圖片辱魁、字體

style-loader 將樣式通過<style>標簽插入到 head 中
css-loader 用于加載 .css 文件,并轉(zhuǎn)換成 commonjs 對象
file-loader 用于解析圖片染簇、字體
url-loader 也可以處理圖片和字體,可以設(shè)置較小資源自動轉(zhuǎn) base64

image.png

image.png

文件指紋策略

概念:打包后輸出的文件名的后綴
作用:進行版本管理

image.png

常見的文件指紋有三種:

  • hash:和整個項目的構(gòu)建相關(guān)砾赔,只要項目文件有修改青灼,整個項目的 hash 值就會改變
  • Chunkhash:和 webpack 打包的 chunk 有關(guān)暴心,不同的 entry 就會生成不同的 chunkhash 值
  • Contenthash:根據(jù)文件內(nèi)容來定義 hash杂拨,文件內(nèi)容不變,則 contenthash 不變
    使用場景:JS- chunkhash 弹沽、 CSS-contenthash 、 圖片 字體- hash


    image.png
代碼壓縮

JS 文件壓縮:webpack 4 默認內(nèi)置了 uglifyjs-webpack-plugin
css 文件壓縮:optimize-css-assets-webpack-plugin击胜,同時使用 cssnano 預(yù)處理器
html 壓縮:html-webpack-plugin役纹,設(shè)置壓縮參數(shù) minify

image.png

minify 詳情配置:https://github.com/kangax/html-minifier#options-quick-reference

下篇,我們記錄下webpack4.0 進階
  • px 自動轉(zhuǎn)rem
  • Tree Shaking 的使用和原理分析
  • Scope Hositing 使用和原理分析
  • 優(yōu)化構(gòu)建命令行的顯示日志
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末促脉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子宫仗,更是在濱河造成了極大的恐慌,老刑警劉巖藕夫,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枯冈,死亡現(xiàn)場離奇詭異毅贮,居然都是意外死亡尘奏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門炫加,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑰煎,“玉大人粟瞬,你說我怎么就攤上這事馍佑∷锥常” “怎么了虚婿?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長插勤。 經(jīng)常有香客問我沽瘦,道長,這世上最難降的妖魔是什么饮六? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任其垄,我火速辦了婚禮苛蒲,結(jié)果婚禮上卤橄,老公的妹妹穿的比我還像新娘。我一直安慰自己臂外,他們只是感情好窟扑,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漏健,像睡著了一般嚎货。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上殖属,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音瓦盛,去河邊找鬼洗显。 笑死,一個胖子當著我的面吹牛原环,可吹牛的內(nèi)容都是我干的挠唆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼嘱吗,長吁一口氣:“原來是場噩夢啊……” “哼玄组!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谒麦,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤俄讹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后绕德,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颅悉,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年迁匠,在試婚紗的時候發(fā)現(xiàn)自己被綠了剩瓶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驹溃。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖延曙,靈堂內(nèi)的尸體忽然破棺而出豌鹤,到底是詐尸還是另有隱情,我是刑警寧澤枝缔,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布布疙,位于F島的核電站,受9級特大地震影響愿卸,放射性物質(zhì)發(fā)生泄漏灵临。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一趴荸、第九天 我趴在偏房一處隱蔽的房頂上張望儒溉。 院中可真熱鬧,春花似錦发钝、人聲如沸顿涣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涛碑。三九已至,卻和暖如春孵淘,著一層夾襖步出監(jiān)牢的瞬間蒲障,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工瘫证, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揉阎,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓痛悯,卻偏偏與公主長得像余黎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子载萌,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

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