Webpack相關

一简肴、概念

1、基本組成:entry澡为、output、loader夺欲、plugins

entry:

入口起點(entry point)指示 webpack 應該使用哪個模塊,來作為構建其內部依賴圖的開始今膊。進入入口起點后些阅,webpack 會找出有哪些模塊和庫是入口起點(直接和間接)依賴的。

入口可以有一個 也可以有多個斑唬,如果多個入口的話 會分別創(chuàng)建依賴圖市埋,相互獨立、完全分離恕刘$突眩可以通過CommonsChunkPlugin插件 來共享通用的chunk,復用代碼和模塊褐着。

output:

output?屬性告訴 webpack 在哪里輸出它所創(chuàng)建的?bundles坷澡,以及如何命名這些文件,默認值為?./dist献起。

只有一個輸出(即使可以存在多個入口起點洋访,但只指定一個輸出配置镣陕。)

如果配置創(chuàng)建了多個單獨的 "chunk"(例如谴餐,使用多個入口起點或使用像 CommonsChunkPlugin 這樣的插件),則應該使用占位符(substitutions)來確保每個文件具有唯一的名稱呆抑。

loader:

loader?讓 webpack 能夠去處理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)岂嗓。loader 可以將所有類型的文件轉換為 webpack 能夠處理的有效模塊,然后你就可以利用 webpack 的打包能力鹊碍,對它們進行處理厌殉。

三種使用方式:webpack中配置;@import引入侈咕;CLI使用公罕;

解析:loader 遵循標準的模塊解析。多數(shù)情況下耀销,loader 將從模塊路徑(通常將模塊路徑認為是?npm install,?node_modules)解析楼眷。

plugins:

loader 被用于轉換某些類型的模塊,而插件則可以用于執(zhí)行范圍更廣的任務。插件的范圍包括罐柳,從打包優(yōu)化和壓縮掌腰,一直到重新定義環(huán)境中的變量。插件接口功能極其強大张吉,可以用來處理各種各樣的任務齿梁。常用的插件有:HtmlWebpackPlugin、HappyPack肮蛹、MiniCssExtractPlugin等勺择。

(梳理一下 常用的插件)

模式:

提供?mode?配置選項,告知 webpack 使用相應模式的內置優(yōu)化伦忠。(會有怎樣不同的優(yōu)化酵幕??缓苛?)

通過選擇?development?或?production?之中的一個芳撒,來設置?mode?參數(shù),你可以啟用相應模式下的 webpack 內置的優(yōu)化


二未桥、打包原理

1笔刹、概念:模塊解析

使用enhanced-resolve,webpack 能夠解析三種文件路徑:絕對路徑冬耿、相對路徑舌菜、模塊路徑。

2亦镶、流程

(原文:https://juejin.im/entry/5b0e3eba5188251534379615

1)初始化:啟動構建日月,讀取與合并配置參數(shù),加載 Plugin缤骨,實例化 Compiler爱咬。

2)編譯:從 Entry 發(fā)出,針對每個 Module 串行調用對應的 Loader 去翻譯文件內容绊起,再找到該 Module 依賴的 Module精拟,遞歸地進行編譯處理。

3)輸出:對編譯后的 Module 組合成 Chunk虱歪,把 Chunk 轉換成文件蜂绎,輸出到文件系統(tǒng)。

如果只執(zhí)行一次構建笋鄙,以上階段將會按照順序各執(zhí)行一次师枣。但在開啟監(jiān)聽模式下,流程將變?yōu)槿缦拢?/p>


流程圖

3萧落、輸出文件

輸出后文件bundle.js践美, (function (modules) { __webpack_require__ ...})([modules1劳殖,modules2,modules3...])

(function(modules) {

? // 模擬 require 語句

? function __webpack_require__() {

? }

? // 執(zhí)行存放所有模塊數(shù)組中的第0個模塊

? __webpack_require__(0);

})([/*存放所有模塊的數(shù)組*/])

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末拨脉,一起剝皮案震驚了整個濱河市哆姻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌玫膀,老刑警劉巖矛缨,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異帖旨,居然都是意外死亡箕昭,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門解阅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來落竹,“玉大人,你說我怎么就攤上這事货抄∈稣伲” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵蟹地,是天一觀的道長积暖。 經(jīng)常有香客問我,道長怪与,這世上最難降的妖魔是什么夺刑? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮分别,結果婚禮上遍愿,老公的妹妹穿的比我還像新娘。我一直安慰自己耘斩,他們只是感情好沼填,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著煌往,像睡著了一般倾哺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刽脖,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音忌愚,去河邊找鬼曲管。 笑死,一個胖子當著我的面吹牛硕糊,可吹牛的內容都是我干的院水。 我是一名探鬼主播腊徙,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼檬某!你這毒婦竟也來了撬腾?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤恢恼,失蹤者是張志新(化名)和其女友劉穎民傻,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體场斑,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡漓踢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了漏隐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喧半。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖青责,靈堂內的尸體忽然破棺而出挺据,到底是詐尸還是另有隱情,我是刑警寧澤脖隶,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布吴菠,位于F島的核電站,受9級特大地震影響浩村,放射性物質發(fā)生泄漏做葵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一心墅、第九天 我趴在偏房一處隱蔽的房頂上張望酿矢。 院中可真熱鬧,春花似錦怎燥、人聲如沸瘫筐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽策肝。三九已至,卻和暖如春隐绵,著一層夾襖步出監(jiān)牢的瞬間之众,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工依许, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棺禾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓峭跳,卻偏偏與公主長得像膘婶,于是被迫代替她去往敵國和親缺前。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容

  • webpack使用學習 本分享學習借鑒webpack中文官網(wǎng)悬襟,官網(wǎng)鏈接(中文文檔):https://www.web...
    腿毛怪丶叔叔閱讀 885評論 0 5
  • 版權聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉載逸绎。 webpack介紹和使用 一惹恃、webpack介紹 1、由來 ...
    it筱竹閱讀 11,142評論 0 21
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,470評論 2 71
  • 前言 webpack 是一個當下最流行的前端資源的模塊打包器棺牧。當 webpack 處理應用程序時巫糙,它會遞歸地構建一...
    weiqinl閱讀 10,138評論 6 9
  • 構建一個小項目——FlyBird,學習webpack和react颊乘。(本文成文于2017/2/25) 從webpac...
    布蕾布蕾閱讀 16,826評論 31 98