第五章:原理(深入淺出 Webpack 筆記)

基本概念

  • Entry:入口,Webpack 執(zhí)行構(gòu)建的第一步將從 Entry 開始讨惩,可抽象成輸入睁壁。
  • Module:模塊,在 Webpack 里一切皆模塊歼郭,一個模塊對應(yīng)著一個文件遗契。
    Webpack 會從配置的 Entry 開始遞歸找出所有依賴的模塊。
  • Chunk:代碼塊病曾,一個 Chunk 由多個模塊組合而成牍蜂,用于代碼合并與分割。
  • Loader:模塊轉(zhuǎn)換器泰涂,用于把模塊原內(nèi)容按照需求轉(zhuǎn)換成新內(nèi)容鲫竞。
  • Plugin:擴(kuò)展插件,在 Webpack 構(gòu)建流程中的特定時機(jī)會廣播出對應(yīng)的事件逼蒙,插件可以監(jiān)聽這些事件的發(fā)生从绘,在特定時機(jī)做對應(yīng)的事情。

流程細(xì)節(jié)

Webpack 的構(gòu)建流程可以分為以下三大階段:

  • 初始化:啟動構(gòu)建,讀取與合并配置參數(shù)僵井,加載 Plugin赁还,實(shí)例化 Compiler
  • 編譯:從 Entry 出發(fā)驹沿,針對每個 Module 串行調(diào)用對應(yīng)的 Loader 去翻譯文件內(nèi)容艘策,再找到該 Module 依賴的 Module,遞歸地進(jìn)行編譯處理渊季。
  • 輸出:對編譯后的 Module 組合成 Chunk朋蔫,把 Chunk 轉(zhuǎn)換成文件,輸出到文件系統(tǒng)却汉。

常用 Loaders

加載文件
  • raw-loader:把文本文件的內(nèi)容加載到代碼中去驯妄。
  • file-loader:把文件輸出到一個文件夾中,在代碼中通過相對 URL 去引用輸出的文件合砂。
  • url-loader:和 file-loader 類似青扔,但是能在文件很小的情況下以 base64 的方式把文件內(nèi)容注入到代碼中去。
  • source-map-loader:加載額外的 Source Map 文件翩伪,以方便斷點(diǎn)調(diào)試微猖。
  • svg-inline-loader:把壓縮后的 SVG 內(nèi)容注入到代碼中。
  • node-loader:加載 Node.js 原生模塊 .node 文件缘屹。
  • image-loader:加載并且壓縮圖片文件凛剥。
  • json-loader:加載 JSON 文件。
  • yaml-loader:加載 YAML 文件轻姿。
編譯模版
  • pug-loader:把 Pug 模版轉(zhuǎn)換成 JavaScript 函數(shù)返回犁珠。
  • handlebars-loader:把 Handlebars 模版編譯成函數(shù)返回。
  • ejs-loader:把 EJS 模版編譯成函數(shù)返回互亮。
  • haml-loader:把 HAML 代碼轉(zhuǎn)換成 HTML犁享。
  • markdown-loader:把 Markdown 文件轉(zhuǎn)換成 HTML
轉(zhuǎn)換腳本語言
  • babel-loader:把 ES6 轉(zhuǎn)換成 ES5豹休。
  • ts-loader:把 TypeScript 轉(zhuǎn)換成 JavaScript炊昆。
  • awesome-typescript-loader:把 TypeScript 轉(zhuǎn)換成 JavaScript,性能要比 ts-loader 好慕爬。
  • coffee-loader:把 CoffeeScript 轉(zhuǎn)換成 JavaScript窑眯。
轉(zhuǎn)換樣式文件
  • css-loader:加載 CSS,支持模塊化医窿、壓縮、文件導(dǎo)入等特性炊林。
  • style-loader:把 CSS 代碼注入到 JavaScript 中姥卢,通過 DOM 操作去加載 CSS
  • sass-loader:把 SCSS/SASS 代碼轉(zhuǎn)換成 CSS
  • postcss-loader:擴(kuò)展 CSS 語法独榴,使用下一代 CSS僧叉。
  • less-loader:把 Less 代碼轉(zhuǎn)換成 CSS 代碼。
  • stylus-loader:把 Stylus 代碼轉(zhuǎn)換成 CSS 代碼棺榔。
檢查代碼
其它
  • vue-loader:加載 Vue.js 單文件組件。
  • i18n-loader:加載多語言版本忘晤,支持國際化宛蚓。
  • ignore-loader:忽略掉部分文件。
  • ui-component-loader:按需加載 UI 組件庫设塔,例如在使用 antd UI 組件庫時凄吏,不會因?yàn)橹挥玫搅?Button 組件而打包進(jìn)所有的組件。

常用 Plugins

用于修改行為
用于優(yōu)化
其它
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末倔矾,一起剝皮案震驚了整個濱河市妄均,隨后出現(xiàn)的幾起案子柱锹,更是在濱河造成了極大的恐慌,老刑警劉巖丰包,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禁熏,死亡現(xiàn)場離奇詭異,居然都是意外死亡邑彪,警方通過查閱死者的電腦和手機(jī)瞧毙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寄症,“玉大人宙彪,你說我怎么就攤上這事∪乘” “怎么了您访?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長剪决。 經(jīng)常有香客問我灵汪,道長,這世上最難降的妖魔是什么柑潦? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任享言,我火速辦了婚禮,結(jié)果婚禮上渗鬼,老公的妹妹穿的比我還像新娘览露。我一直安慰自己,他們只是感情好譬胎,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布差牛。 她就那樣靜靜地躺著,像睡著了一般堰乔。 火紅的嫁衣襯著肌膚如雪偏化。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天镐侯,我揣著相機(jī)與錄音侦讨,去河邊找鬼。 笑死苟翻,一個胖子當(dāng)著我的面吹牛韵卤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播崇猫,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼沈条,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了邓尤?” 一聲冷哼從身側(cè)響起拍鲤,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤贴谎,失蹤者是張志新(化名)和其女友劉穎汞扎,沒想到半個月后季稳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澈魄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年景鼠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痹扇。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡铛漓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鲫构,到底是詐尸還是另有隱情浓恶,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布结笨,位于F島的核電站包晰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炕吸。R本人自食惡果不足惜伐憾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赫模。 院中可真熱鬧树肃,春花似錦、人聲如沸瀑罗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斩祭。三九已至劣像,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間停忿,已是汗流浹背驾讲。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留席赂,地道東北人吮铭。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像颅停,于是被迫代替她去往敵國和親谓晌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

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

  • 原文首發(fā)于:Webpack 3溺欧,從入門到放棄 Update (2017.8.27) : 關(guān)于 output.pub...
    昵稱都被用完了衰閱讀 1,884評論 4 19
  • GitChat技術(shù)雜談 前言 本文較長,為了節(jié)省你的閱讀時間柏肪,在文前列寫作思路如下: 什么是 webpack姐刁,它要...
    蕭玄辭閱讀 12,671評論 7 110
  • Webpack 第一章 Webpack 簡介 Instagram團(tuán)隊(duì)在進(jìn)行前端開發(fā)的過程中,發(fā)現(xiàn)當(dāng)項(xiàng)目組成員越來越...
    whitsats閱讀 623評論 0 1
  • ? ? 主要在實(shí)戰(zhàn)上烦味,可能對于概念講解上不太多聂使,如果有需要的同學(xué)可以自己看下官方文檔 ? webpack2發(fā)布也有...
    makuta閱讀 606評論 0 0
  • .babelrc 文件 以上配置文件里的transform-runtime 對應(yīng)的插件全名叫作babel-plu...
    Upcccz閱讀 326評論 0 1