Webpack 概念

一直想深入學(xué)學(xué) Webpack旬牲,無(wú)奈被其他技術(shù)的學(xué)習(xí)一直耽擱了伟端,對(duì)于 Webpack 還僅僅停留在會(huì)使用的階段中蚤吹,以前剛開(kāi)始時(shí)嘗試深入過(guò)球榆,但因?yàn)槲丛羞^(guò)很好的模塊開(kāi)發(fā)經(jīng)驗(yàn)而對(duì)很多功能不是理解娃兽,強(qiáng)烈建議還是有些項(xiàng)目的開(kāi)發(fā)流程在腦中才有必要去深入 Webpack

現(xiàn)如今個(gè)人很喜歡邊學(xué)邊記菇民,一方面是為了保留零碎的知識(shí)點(diǎn),也是為自己創(chuàng)立個(gè)在線的 API,然而最近花出了很多的時(shí)間在惡補(bǔ)英語(yǔ)第练,可能每天來(lái)學(xué)技術(shù)的時(shí)間并不是很多阔馋,也并不基于快速的將其學(xué)會(huì),重在積累娇掏!

本文只是我學(xué)習(xí)的個(gè)人總結(jié)呕寝,基本都是從官網(wǎng)以及各種材料上將自己覺(jué)得重要又不是很了解的知識(shí)點(diǎn)進(jìn)行記錄,以簡(jiǎn)短精華為核心婴梧,想必應(yīng)該并不會(huì)適合新手作為學(xué)習(xí)的閱讀材料下梢,反而應(yīng)該適合對(duì) Webpack 有過(guò)一半以上的了解并作為復(fù)習(xí)或填補(bǔ)深度

這一篇只是初步的嘗鮮,既然決定深入 webpack塞蹭,那肯定要用多個(gè)篇幅來(lái)詳細(xì)分析

一. 入口(Entry)

1. 單個(gè)入口

  • entry: string | Array<string>
  • entry: { main: string | Array<string> }
  • entry 為路徑數(shù)組時(shí)也是單個(gè)入口孽江,是將所有路徑文件打包為一個(gè)

2. 對(duì)象語(yǔ)法

  • entry: { [entryChunkName: string]: string | Array<string> }

二. 輸出(Output)

  • output: {
      filename: string,
      path: string,
    },
    
  • 可以使用以下占位符
    • [name]
    • [hash]

三. 解析器(Loader)

  • module: {
      rules: [
        {
          test: /\.css$/,
          use: [
            { loader: 'style-loader' },
            {
              loader: 'css-loader',
              options: { modules: true },
            },
          ],
        },
        { test: /\.ts$/, use: 'ts-loader' },
      ],
    },
    
  • 可以在 import 或任何等效于 import 的方式中指定 loader,使用 ! 將資源中的 loader 分開(kāi)
  • Loader 特性
    • loader 支持鏈?zhǔn)絺鬟f番电,能夠?qū)Y源使用流水線岗屏,一組鏈?zhǔn)降?loader 將按照先后順序進(jìn)行編譯,loader 鏈中的第一個(gè) loader 返回值給下一個(gè) loader漱办,在最后一個(gè) loader 这刷,返回 webpack 所預(yù)期的 JavaScript
    • loader 可以是同步的,也可以是異步的
    • loader 運(yùn)行在 Node.js 中娩井,并且能夠執(zhí)行任何可能的操作
    • loader 接收查詢參數(shù)暇屋,用于對(duì) loader 傳遞配置
    • 除了使用 package.json 常見(jiàn)的 main 屬性,還可以將普通的 npm 模塊導(dǎo)出為 loader洞辣,需要在 package.json 里定義一個(gè) loader 字段
    • loader 能夠產(chǎn)生額外的任意文件
  • loader 模塊需要導(dǎo)出為一個(gè)函數(shù)咐刨,并且使用 Node.js 兼容的 JavaScript 編寫(xiě)(如何編寫(xiě) loader?
  • loader 列表

四. 插件(Plugins)

  • plugins: [ new Plugins(), ]
  • webpack 插件是一個(gè)具有 apply 屬性的 JavaScript 對(duì)象屋彪,apply 屬性會(huì)被 webpack compiler 調(diào)用所宰,并且 compiler 對(duì)象可在整個(gè)編譯生命周期訪問(wèn)
  • 由于插件可以攜帶參數(shù)或選項(xiàng)绒尊,必須在 webpack 中畜挥,向 plugins 屬性傳入 new 實(shí)例

五. 模塊解析(Module Resolution)

1. 絕對(duì)路徑

  • 由于已經(jīng)取得絕對(duì)路徑,因此不需要進(jìn)一步再做解析

2. 相對(duì)路徑

  • 使用 import 或 require 的資源文件所在的目錄被認(rèn)為是上下文目錄婴谱,以此產(chǎn)生絕對(duì)路徑

3. 模塊路徑

  • 模塊將在 resolve.modules 中指定的所有目錄內(nèi)搜索蟹但,你可以替換初識(shí)模塊路徑,此替換路徑通過(guò)使用 resolve.alias 配置選項(xiàng)來(lái)創(chuàng)建一個(gè)別名
  • 一旦根據(jù)上述規(guī)則解析路徑后谭羔,解析器將檢查路徑是否指向文件或目錄华糖,如果路徑指向一個(gè)文件:
    • 如果路徑具有文件擴(kuò)展名,則被直接將文件打包
    • 否則瘟裸,將使用 resolve.extensions 選項(xiàng)作為文件擴(kuò)展名來(lái)解析客叉,此選項(xiàng)告訴解析器在解析中能夠接受哪些擴(kuò)展名(例如 .js)
  • 如果路徑指向一個(gè)文件夾,則采取以下步驟找到具有正確擴(kuò)展名的正確文件:
    • 如果文件夾中包含 package.json 文件,則按照順序查找 resolve.mainFields 配置選項(xiàng)中指定的字段兼搏,并且 package.json 中的第一個(gè)這樣的字段確定文件路徑
    • 如果 package.json 文件不存在或者 package.json 文件中的 main 字段沒(méi)有返回一個(gè)有效路徑卵慰,則按照順序查找 resolve.mainFiles 配置選項(xiàng)中指定的文件名,看是否能在 import/require 目錄下匹配到一個(gè)存在的文件名
    • 文件擴(kuò)展名通過(guò) resolve.extensions 選項(xiàng)采用類似的方法進(jìn)行解析

六. 構(gòu)建目標(biāo)(Targets)

  • target: string
  • 因?yàn)榉?wù)器和瀏覽器代碼都可以用 JavaScript 編寫(xiě)佛呻,所以 webpack 提供了多種構(gòu)建目標(biāo)裳朋,可以在 webpack 配置中設(shè)置
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吓著,隨后出現(xiàn)的幾起案子鲤嫡,更是在濱河造成了極大的恐慌,老刑警劉巖绑莺,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暖眼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡纺裁,警方通過(guò)查閱死者的電腦和手機(jī)罢荡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)对扶,“玉大人区赵,你說(shuō)我怎么就攤上這事±四希” “怎么了笼才?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)络凿。 經(jīng)常有香客問(wèn)我骡送,道長(zhǎng),這世上最難降的妖魔是什么絮记? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任摔踱,我火速辦了婚禮,結(jié)果婚禮上怨愤,老公的妹妹穿的比我還像新娘派敷。我一直安慰自己,他們只是感情好撰洗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布篮愉。 她就那樣靜靜地躺著,像睡著了一般差导。 火紅的嫁衣襯著肌膚如雪试躏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天设褐,我揣著相機(jī)與錄音颠蕴,去河邊找鬼泣刹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛犀被,可吹牛的內(nèi)容都是我干的项玛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼弱判,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼襟沮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起昌腰,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤开伏,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后遭商,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體固灵,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年劫流,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了巫玻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡祠汇,死狀恐怖仍秤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情可很,我是刑警寧澤诗力,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站我抠,受9級(jí)特大地震影響苇本,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜菜拓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一瓣窄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纳鼎,春花似錦俺夕、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)登舞。三九已至贰逾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菠秒,已是汗流浹背疙剑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工氯迂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人言缤。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓嚼蚀,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親管挟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轿曙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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

  • 版權(quán)聲明:本文為博主原創(chuàng)文章穿铆,未經(jīng)博主允許不得轉(zhuǎn)載您单。 webpack介紹和使用 一、webpack介紹 1荞雏、由來(lái) ...
    it筱竹閱讀 11,121評(píng)論 0 21
  • GitChat技術(shù)雜談 前言 本文較長(zhǎng)虐秦,為了節(jié)省你的閱讀時(shí)間,在文前列寫(xiě)作思路如下: 什么是 webpack凤优,它要...
    蕭玄辭閱讀 12,693評(píng)論 7 110
  • 無(wú)意中看到zhangwnag大佬分享的webpack教程感覺(jué)受益匪淺悦陋,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,164評(píng)論 7 35
  • 今天上午發(fā)現(xiàn)此問(wèn)題Google之解決辦法 親測(cè)可行!!! 參考:http://stackoverflow.com/...
    Andy周閱讀 1,498評(píng)論 0 1
  • 深夜回家的時(shí)候痒钝,總是會(huì)感到莫名的孤獨(dú)和害怕。 不知道已經(jīng)是第幾個(gè)晚上痢毒,我又獨(dú)自一人走著夜路送矩。看著街道上過(guò)往...
    咕嚕413閱讀 1,263評(píng)論 2 2