webpack

概念

本質(zhì)上然遏,webpack 是一個現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。當 webpack 處理應(yīng)用程序時吧彪,它會遞歸地構(gòu)建一個依賴關(guān)系圖(dependency graph),其中包含應(yīng)用程序需要的每個模塊丢早,然后將所有這些模塊打包成一個或多個 bundle姨裸。

從 webpack v4.0.0 開始,可以不用引入一個配置文件怨酝。然而傀缩,webpack 仍然還是高度可配置的。在開始前你需要先理解四個核心概念

入口(entry)
輸出(output)
loader
插件(plugins)

入口(entry)

入口起點(entry point)指示 webpack 應(yīng)該使用哪個模塊农猬,來作為構(gòu)建其內(nèi)部依賴圖的開始赡艰。進入入口起點后,webpack 會找出有哪些模塊和庫是入口起點(直接和間接)依賴的斤葱。

每個依賴項隨即被處理慷垮,最后輸出到稱之為 bundles 的文件中,我們將在下一章節(jié)詳細討論這個過程揍堕。

可以通過在 webpack 配置中配置 entry 屬性料身,來指定一個入口起點(或多個入口起點)。默認值為 ./src衩茸。

接下來我們看一個 entry 配置的最簡單例子:

webpack.config.js

module.exports = {
  entry: './path/to/my/entry/file.js'
};

出口(output)

output 屬性告訴 webpack 在哪里輸出它所創(chuàng)建的 bundles芹血,以及如何命名這些文件,默認值為 ./dist楞慈♂V颍基本上,整個應(yīng)用程序結(jié)構(gòu)囊蓝,都會被編譯到你指定的輸出路徑的文件夾中饿悬。你可以通過在配置中指定一個 output 字段,來配置這些處理過程:

webpack.config.js

const path = require('path');

module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
  }
};

在上面的示例中慎颗,我們通過 output.filenameoutput.path 屬性乡恕,來告訴 webpack bundle 的名稱言询,以及我們想要 bundle 生成(emit)到哪里“烈耍可能你想要了解在代碼最上面導入的 path 模塊是什么运杭,它是一個 [Node.js 核心模塊 操作文件路徑。

loade

loader 讓 webpack 能夠去處理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)函卒。loader 可以將所有類型的文件轉(zhuǎn)換為 webpack 能夠處理的有效模塊辆憔,然后你就可以利用 webpack 的打包能力,對它們進行處理报嵌。

本質(zhì)上虱咧,webpack loader 將所有類型的文件,轉(zhuǎn)換為應(yīng)用程序的依賴圖(和最終的 bundle)可以直接引用的模塊锚国。

//注意腕巡,loader 能夠 import 導入任何類型的模塊(例如 .css 文件),這是 webpack 特有的功能血筑,其他打包程序或任務(wù)執(zhí)行器的可能并不支持绘沉。我們認為這種語言擴展是有很必要的,因為這可以使開發(fā)人員創(chuàng)建出更準確的依賴關(guān)系圖豺总。

在更高層面车伞,在 webpack 的配置中 loader 有兩個目標:

test 屬性,用于標識出應(yīng)該被對應(yīng)的 loader 進行轉(zhuǎn)換的某個或某些文件喻喳。
use 屬性另玖,表示進行轉(zhuǎn)換時,應(yīng)該使用哪個 loader表伦。

webpack.config.js

const path = require('path');

const config = {
  output: {
    filename: 'my-first-webpack.bundle.js'
  },
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  }
};

module.exports = config;

以上配置中谦去,對一個單獨的 module 對象定義了 rules 屬性,里面包含兩個必須屬性:test 和 use绑榴。這告訴 webpack 編譯器(compiler) 如下信息:

“嘿哪轿,webpack 編譯器,當你碰到「在 require()/import 語句中被解析為 '.txt' 的路徑」時翔怎,在你對它打包之前窃诉,先使用 raw-loader 轉(zhuǎn)換一下〕嗵祝”

模式

通過選擇 developmentproduction 之中的一個飘痛,來設(shè)置 mode 參數(shù),你可以啟用相應(yīng)模式下的 webpack 內(nèi)置的優(yōu)化

module.exports = {
  mode: 'production'
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末容握,一起剝皮案震驚了整個濱河市宣脉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剔氏,老刑警劉巖塑猖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竹祷,死亡現(xiàn)場離奇詭異,居然都是意外死亡羊苟,警方通過查閱死者的電腦和手機塑陵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜡励,“玉大人令花,你說我怎么就攤上這事×挂校” “怎么了兼都?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長稽寒。 經(jīng)常有香客問我扮碧,道長,這世上最難降的妖魔是什么瓦胎? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任芬萍,我火速辦了婚禮,結(jié)果婚禮上搔啊,老公的妹妹穿的比我還像新娘。我一直安慰自己北戏,他們只是感情好负芋,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嗜愈,像睡著了一般旧蛾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蠕嫁,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天锨天,我揣著相機與錄音,去河邊找鬼剃毒。 笑死病袄,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的赘阀。 我是一名探鬼主播益缠,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼基公!你這毒婦竟也來了幅慌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤轰豆,失蹤者是張志新(化名)和其女友劉穎胰伍,沒想到半個月后齿诞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡骂租,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年祷杈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菩咨。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吠式,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抽米,到底是詐尸還是另有隱情特占,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布云茸,位于F島的核電站是目,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏标捺。R本人自食惡果不足惜懊纳,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亡容。 院中可真熱鬧嗤疯,春花似錦、人聲如沸闺兢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屋谭。三九已至脚囊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桐磁,已是汗流浹背悔耘。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留我擂,地道東北人衬以。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像扶踊,于是被迫代替她去往敵國和親泄鹏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

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

  • 目錄第1章 webpack簡介 11.1 webpack是什么秧耗? 11.2 官網(wǎng)地址 21.3 為什么使用 web...
    lemonzoey閱讀 1,735評論 0 1
  • 一备籽、概念 本質(zhì)上,webpack 是一個現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bun...
    Timmy小石匠閱讀 1,976評論 0 29
  • webpack使用學習 本分享學習借鑒webpack中文官網(wǎng)车猬,官網(wǎng)鏈接(中文文檔):https://www.web...
    腿毛怪丶叔叔閱讀 881評論 0 5
  • 在現(xiàn)在的前端開發(fā)中霉猛,前后端分離、模塊化開發(fā)珠闰、版本控制惜浅、文件合并與壓縮、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,440評論 1 32
  • 構(gòu)建一個小項目——FlyBird伏嗜,學習webpack和react坛悉。(本文成文于2017/2/25) 從webpac...
    布蕾布蕾閱讀 16,821評論 31 98