webpack復(fù)習(xí)總結(jié)

首先小小的吐槽一下webpack中文網(wǎng)的網(wǎng)站質(zhì)量凸主,大部分內(nèi)容還是介紹的不錯(cuò)的,但是有一些語(yǔ)法以及插件的使用方法還是老版本的容客,沒(méi)有更新,導(dǎo)致在跟著敲代碼的時(shí)候约郁,偶爾會(huì)卡姿跆簟(可能也是個(gè)好處吧?哈哈鬓梅。遇到問(wèn)題可以多思考找找原版的英文介紹或者其他博客的介紹)供置。下面總結(jié)一下webpack重要常用的概念,以及常用的loader以及插件绽快,作為一個(gè)記錄芥丧。

1.概念

基礎(chǔ)的四個(gè)部分組成,入口entry坊罢,輸出output续担,loader,plugins活孩。以及最實(shí)用的HMR(模塊熱替換)物遇。

2.loader

loader的是轉(zhuǎn)換源碼的一個(gè)工具,如將ES6轉(zhuǎn)成ES5憾儒,將小size圖片轉(zhuǎn)成DataURL等询兴。這可以使我們寫(xiě)代碼的時(shí)候做到高內(nèi)聚的效果,也可以使組件化的開(kāi)發(fā)更為快捷簡(jiǎn)單起趾。
常用loader:
css-loader诗舰,style-loader,url-loader(處理圖片),babel-loader训裆。loader總覽

3.plugins

插件是用來(lái)優(yōu)化構(gòu)建后的文件的眶根。我們項(xiàng)目中去優(yōu)化也大部分是通過(guò)配置各種各樣的插件去實(shí)現(xiàn)的蜀铲。
常用的插件:
clean-webpack-plugin(用來(lái)清除構(gòu)建文件夾上一次構(gòu)建的文件),html-webpack-plugin(動(dòng)態(tài)生成入口html文件汛闸,動(dòng)態(tài)增加入口JS以及CSS蝙茶,也支持傳入項(xiàng)目配置好的入口html路徑),webpack-merge(在區(qū)分生產(chǎn)環(huán)境與開(kāi)發(fā)環(huán)境是作為合并通用配置與個(gè)性配置方法),extract-text-webpack-plugin(將css文件抽離成單獨(dú)的文件而不是引入在頁(yè)面的head中)诸老,SplitChunksPlugin(抽取公共代碼隆夯,減少總體包體積),definePlugin(定義全局的變量)别伏,webpack-dev-middleware與webpack-hot-middleware(實(shí)現(xiàn)HMR功能)蹄衷。

4.問(wèn)題總結(jié)以及注意事項(xiàng)

1.output中的publicPath是一個(gè)很靈活重要的配置屬性(配置CDN訪問(wèn)路徑,以及生產(chǎn)環(huán)境與開(kāi)發(fā)環(huán)境的訪問(wèn)路徑)厘肮。
2.webpack-hot-middleware使用需要重新設(shè)置一遍入口選項(xiàng)愧口,考慮到多入口情況,常見(jiàn)簡(jiǎn)單實(shí)現(xiàn)方法如下:

const express = require('express');
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');

const app = express();
const config = require('./webpack.config.js');
const entries = config.entry;
Object.keys(entries).forEach(entryKey => {
  config.entry[entryKey] = ['webpack-hot-middleware/client?noInfo=true&reload=true',entries[entryKey]]
})
const compiler = webpack(config);
// console.log( compiler)
// Tell express to use the webpack-dev-middleware and use the webpack.config.js
// configuration file as a base.
app.use(webpackDevMiddleware(compiler, {
  publicPath: config.output.publicPath
}));
app.use(require("webpack-hot-middleware")(compiler));
// Serve the files on port 3000.
app.listen(3000, function () {
  console.log('Example app listening on port 3000!\n');
});

3.webpack4.x以后移除了之前的commonsChunkPlugin插件类茂,引入了splitChunksPlugin耍属,其中最重要的cacheGroups要好好掌握。常見(jiàn)配置:(實(shí)現(xiàn)提取node-modules中的公用模塊),貼個(gè)講的比較好的博客

 optimization: {
    splitChunks: {
      cacheGroups: {
        vendors: {
          test: /[\\/]node_modules[\\/]/,
          name: 'vendors',
          minSize: 30000,
          minChunks: 1,
          chunks: 'initial',
          priority: 1 // 該配置項(xiàng)是設(shè)置處理的優(yōu)先級(jí)巩检,數(shù)值越大越優(yōu)先處理
        }
      }
    }
  },

4.externals使用
利用externals配置體積大的插件依賴項(xiàng)厚骗,可以減少打包后的體積,可以減少資源加載的時(shí)間兢哭,通過(guò)配置cnd鏈接领舰,可以控制2~3個(gè)cdn域名下的資源,這樣可以并行加載迟螺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冲秽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子矩父,更是在濱河造成了極大的恐慌锉桑,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窍株,死亡現(xiàn)場(chǎng)離奇詭異刨仑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)夹姥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門杉武,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人辙售,你說(shuō)我怎么就攤上這事轻抱。” “怎么了旦部?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵祈搜,是天一觀的道長(zhǎng)较店。 經(jīng)常有香客問(wèn)我,道長(zhǎng)容燕,這世上最難降的妖魔是什么梁呈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蘸秘,結(jié)果婚禮上官卡,老公的妹妹穿的比我還像新娘。我一直安慰自己醋虏,他們只是感情好寻咒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著颈嚼,像睡著了一般毛秘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阻课,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天叫挟,我揣著相機(jī)與錄音,去河邊找鬼限煞。 笑死抹恳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晰骑。 我是一名探鬼主播适秩,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绊序,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼硕舆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起骤公,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抚官,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后阶捆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體凌节,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年洒试,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了倍奢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡垒棋,死狀恐怖卒煞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叼架,我是刑警寧澤畔裕,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布衣撬,位于F島的核電站,受9級(jí)特大地震影響扮饶,放射性物質(zhì)發(fā)生泄漏具练。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一甜无、第九天 我趴在偏房一處隱蔽的房頂上張望扛点。 院中可真熱鬧,春花似錦毫蚓、人聲如沸占键。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)畔乙。三九已至,卻和暖如春翩概,著一層夾襖步出監(jiān)牢的瞬間牲距,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工钥庇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牍鞠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓评姨,卻偏偏與公主長(zhǎng)得像难述,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吐句,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • 2017年12月7日更新胁后,添加了clean-webpack-plugin,babel-env-preset,添加本...
    ZombieBrandg閱讀 1,163評(píng)論 0 19
  • 在現(xiàn)在的前端開(kāi)發(fā)中,前后端分離嗦枢、模塊化開(kāi)發(fā)攀芯、版本控制、文件合并與壓縮文虏、mock數(shù)據(jù)等等一些原本后端的思想開(kāi)始...
    Charlot閱讀 5,443評(píng)論 1 32
  • 前端將大型項(xiàng)目分成一個(gè)個(gè)單獨(dú)的模塊侣诺,一般封裝好的每個(gè)模塊都會(huì)實(shí)現(xiàn)一個(gè)目的明確的完成的功能。如何處理這些模塊以及模塊...
    pixels閱讀 3,426評(píng)論 1 14
  • 我所有的自負(fù)都來(lái)自我的自卑氧秘, 所有的英雄氣概都來(lái)自于我內(nèi)心的軟弱年鸳, 所有的振振有詞都因?yàn)樾闹袧M是懷疑, 我假裝無(wú)情...
    Leslie_476e閱讀 357評(píng)論 0 1
  • 這是我的第1篇原創(chuàng)日記丸相,相信日積月累的力量搔确! 打造高情商的方法竟然是: 賣水果,賣水果,賣水果妥箕。周梁滥酥,你大清早鬧哪...
    A0周梁閱讀 163評(píng)論 0 0