webpack學(xué)習:plugin入門

1.plugin和loader的區(qū)別

loader:

webpack只能理解JavaScript和JSON文件猜谚。loader讓webpack能夠去處理其他類型的文件掏击,并將它們轉(zhuǎn)換為有效 模塊霎苗,以供應(yīng)用程序使用盏浇,以及被添加到依賴圖中乍丈。

思考如下webpack.config.js配置:

const path = require('path');

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

它告訴webpack編譯器在打包過程中衙解,碰到「在 require()/import語句中被解析為'.txt'的路徑」時,在對它打包之前令野,先使用raw-loader轉(zhuǎn)換一下舀患。”

plugin

loader用于轉(zhuǎn)換某些類型的模塊气破,而插件則可以用于執(zhí)行范圍更廣的任務(wù)聊浅。包括:打包優(yōu)化,資源管理现使,注入環(huán)境變量低匙。

思考如下webpack.config.js配置:

const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通過 npm 安裝
const webpack = require('webpack'); // 用于訪問內(nèi)置插件

module.exports = {
  module: {
    rules: []
  },
  plugins: [
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};

它告訴webpack編譯器在打包過程中需要使用到plugin,而什么時候使用什么plugin碳锈,則根據(jù)plugin的具體實現(xiàn)而定

總結(jié):
loader用于對模塊源碼的轉(zhuǎn)換顽冶,定義webpack如何處理非javascript模塊,并且在buld中引入這些依賴售碳。loader可以將文件從不同的語言(如TypeScript)轉(zhuǎn)換為JavaScript强重,或者將內(nèi)聯(lián)圖像轉(zhuǎn)換為data URL。而plugin可以解決loader無法實現(xiàn)的其他事贸人,從打包優(yōu)化和壓縮间景,到重新定義環(huán)境變量,功能強大到可以用來處理各種各樣的任務(wù)艺智。

2.使用

以HtmlWebpackPlugin為例拱燃,當我們只使用loader打包時,打包出的文件夾(假設(shè)為輸出路徑名為dist)里并不含有html文件力惯,必須手動復(fù)制到dist文件夾下碗誉,并且手動更改引入的js文件為打包生成的js文件。而HtmlWebpackPlugin可以自動處理這個問題:

const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通過 npm 安裝
const webpack = require('webpack'); // 用于訪問內(nèi)置插件

module.exports = {
  entry: 'index.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    filename: 'bundle.js'
  },
  plugins: [
    new HtmlWebpackPlugin()
  ]
};

執(zhí)行打包后就會在dist目錄下生成index.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>webpack App</title>
  </head>
  <body>
    <script src="bundle.js"></script>
  </body>
</html>

如果希望使用src下自己的index.html父晶,可以配置:

module.exports = {
  entry: 'index.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    filename: 'bundle.js'
  },
  plugins: [new HtmlWebpackPlugin({  
      filename: 'bundle.html',//自定義輸出html的名字
      template: 'src/index.html'//以自己的html文件為模板    
  })]
};

該配置代表哮缺,生成之后的文件名為bundle.html,它的內(nèi)容等于在src/index.html文件中自動插入<script src="bundle.js"></script>的結(jié)果
往往一個插件的配置項有很多甲喝,可以在其官方地址查看尝苇,HtmlWebpackPlugin的options文檔地址為:https://github.com/jantimon/html-webpack-plugin#options

這里列舉了很多webpack官方推薦的plugin,常用的除了上面的html-webpack-plugin埠胖,還有:

  • clean-webpack-plugin:每次構(gòu)建前清理/dist文件夾糠溜,防止新舊打包生成的代碼混合
  • webpack.HotModuleReplacementPlugin:webpack自帶,熱替換插件
  • uglifyjs-webpack-plugin:js代碼壓縮
  • optimize-css-assets-webpack-plugin:CSS壓縮優(yōu)化
  • mini-css-extract-plugin:將CSS提取為獨立的文件的插件直撤,對每個包含css的js文件都會創(chuàng)建一個CSS文件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末非竿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子谋竖,更是在濱河造成了極大的恐慌红柱,老刑警劉巖承匣,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锤悄,居然都是意外死亡韧骗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門零聚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袍暴,“玉大人,你說我怎么就攤上這事隶症≌#” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵沿腰,是天一觀的道長览徒。 經(jīng)常有香客問我狈定,道長颂龙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任纽什,我火速辦了婚禮措嵌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芦缰。我一直安慰自己企巢,他們只是感情好,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布让蕾。 她就那樣靜靜地躺著浪规,像睡著了一般。 火紅的嫁衣襯著肌膚如雪探孝。 梳的紋絲不亂的頭發(fā)上笋婿,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音顿颅,去河邊找鬼缸濒。 笑死,一個胖子當著我的面吹牛粱腻,可吹牛的內(nèi)容都是我干的庇配。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼绍些,長吁一口氣:“原來是場噩夢啊……” “哼捞慌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起柬批,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤卿闹,失蹤者是張志新(化名)和其女友劉穎揭糕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锻霎,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡著角,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了旋恼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吏口。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖冰更,靈堂內(nèi)的尸體忽然破棺而出产徊,到底是詐尸還是另有隱情,我是刑警寧澤蜀细,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布舟铜,位于F島的核電站,受9級特大地震影響奠衔,放射性物質(zhì)發(fā)生泄漏谆刨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一归斤、第九天 我趴在偏房一處隱蔽的房頂上張望痊夭。 院中可真熱鬧,春花似錦脏里、人聲如沸她我。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽番舆。三九已至,卻和暖如春矾踱,著一層夾襖步出監(jiān)牢的瞬間恨狈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工介返, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拴事,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓圣蝎,卻偏偏與公主長得像刃宵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子徘公,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

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

  • webpack使用學(xué)習 本分享學(xué)習借鑒webpack中文官網(wǎng)牲证,官網(wǎng)鏈接(中文文檔):https://www.web...
    腿毛怪丶叔叔閱讀 866評論 0 5
  • Webpack學(xué)習總結(jié) 此文只是自己學(xué)習webpack的一些總結(jié),方便自己查閱关面,閱讀不變坦袍,非常抱歉J帷! 下載安裝:...
    Lxs_597閱讀 936評論 0 0
  • webpack 是什么捂齐? 本質(zhì)上蛮放,webpack 是一個現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(mo...
    IT老馬閱讀 3,303評論 2 27
  • 前端將大型項目分成一個個單獨的模塊,一般封裝好的每個模塊都會實現(xiàn)一個目的明確的完成的功能奠宜。如何處理這些模塊以及模塊...
    pixels閱讀 3,412評論 1 14
  • 一點一點 一念一念 原來我們的愛情也有期限 不想不念 不說無緣 只是早就已經(jīng)忘了時間 Rap:不知道還在等什么 難...
    拾年姑娘閱讀 201評論 1 2