Webpack-CommonsChunkPlugin

當(dāng)前項(xiàng)目結(jié)構(gòu)

項(xiàng)目結(jié)構(gòu)

其中

  • Greeter.js 引用了 config.json
  • main.js 和 second.js 都引用了 Greeter.js
  • main.js 還引用了 onlyformain.js
  • second.js 還引用了 onlyforsecond.js

代碼如下

// config.json
{
  "greetText": "Hi there and greetings from JSON!"
}

// Greeter.js
var config = require('./config.json');
module.exports = function() {
  var greet = document.createElement('div');
  greet.textContent = config.greetText;
  greet.innerText = config.greetText;
  console.log(config.greetText)
  return greet;
};

// main.js
import 'babel-polyfill'
import './OnlyForMain'
var greeter = require("./Greeter.js")
document.getElementById('root').appendChild(greeter());
console.log("this is from main.js")

// second.js
import 'babel-polyfill'
import './OnlyForSecond'
var greeter = require("./Greeter.js")
document.getElementById('root').appendChild(greeter());
console.log("this is from second.js")

// onlyformain.js
var config = require('./config.json');
module.exports = function() {
  console.log("this is only for main")
  return {};
};

// onlyforsecond.js
var config = require('./config.json');
module.exports = function() {
  console.log("this is only for second")
  return {};
};

webpack 配置

Paste_Image.png

當(dāng)配置 commonChunkPlugin 參數(shù),結(jié)果如下:

Case 1

Paste_Image.png

命令行

Paste_Image.png

打包后


沒有后綴

Case2

Paste_Image.png

命令行

Paste_Image.png

提出了公共js - init.js

Case3

Paste_Image.png

命令行

Paste_Image.png

Case4

Paste_Image.png

命令行

4

**assert 名稱 和 chunk 名稱 不一樣了 **

Case5

5

命令行

Paste_Image.png

Case6

Paste_Image.png

命令行

Paste_Image.png

此時(shí)common.js中僅僅有module-require函數(shù)

Case7

Paste_Image.png

命令行

Paste_Image.png

此時(shí)common.js提取出了config.json和Greeter.js

Case8

Paste_Image.png

命令行

Paste_Image.png

common.js提取出了所有的js保礼,此時(shí) main.js 和 second.js中的代碼僅有一行

webpackJsonp([0,1],[]);

Case9

Paste_Image.png

命令行

Paste_Image.png

**僅僅提出了 module-require 公共部分 姑裂,其他公共模塊并不抽取 **

Case 10

Paste_Image.png

命令行

Paste_Image.png

Case11

Paste_Image.png

命令行

Paste_Image.png

總結(jié)

CommonsChunkPlugin

options.name或options.names(string | string []):公共塊的塊名稱树灶。 可以通過傳遞現(xiàn)有塊的名稱來選擇現(xiàn)有塊督笆。 如果傳遞一個(gè)字符串?dāng)?shù)組闽坡,這等于為每個(gè)塊名稱多次調(diào)用插件育叁。 如果省略并且options.async或options.children設(shè)置為所有塊迅脐,則使用options.filename作為塊名。

options.filename(string):公共塊的文件名模板擂红。 可以包含與output.filename相同的占位符仪际。 如果省略,原始文件名不會(huì)被修改(通常為output.filename或output.chunkFilename)昵骤。

options.minChunks(number | Infinity | function(module树碱,count) - > boolean):在移動(dòng)到公共塊之前需要包含一個(gè)模塊的塊的最小數(shù)量。 該數(shù)字必須大于或等于2且小于或等于塊的數(shù)量变秦。 傳遞無限只是創(chuàng)建公共塊成榜,但不移動(dòng)模塊。 通過提供一個(gè)函數(shù)蹦玫,你可以添加自定義邏輯赎婚。 (默認(rèn)為塊的數(shù)量)

options.chunks(string []):按塊名稱選擇源塊。 塊必須是公共塊的子節(jié)點(diǎn)樱溉。 如果省略挣输,則選擇所有條目塊。

options.children(boolean):如果true福贞,則選擇公共塊的所有子節(jié)點(diǎn)

options.async(boolean | string):如果為true撩嚼,將創(chuàng)建一個(gè)新的異步公共塊作為options.name的子節(jié)點(diǎn)和options.chunks的子節(jié)點(diǎn)。 它與options.chunks并行加載挖帘。 可以通過提供所需的字符串而不是true來更改輸出文件的名稱完丽。

options.minSize(number):創(chuàng)建公共塊之前所有公共模塊的最小大小。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拇舀,一起剝皮案震驚了整個(gè)濱河市逻族,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骄崩,老刑警劉巖聘鳞,帶你破解...
    沈念sama閱讀 211,496評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異刁赖,居然都是意外死亡搁痛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門宇弛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸡典,“玉大人,你說我怎么就攤上這事枪芒〕箍觯” “怎么了谁尸?”我有些...
    開封第一講書人閱讀 157,091評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)纽甘。 經(jīng)常有香客問我良蛮,道長(zhǎng),這世上最難降的妖魔是什么悍赢? 我笑而不...
    開封第一講書人閱讀 56,458評(píng)論 1 283
  • 正文 為了忘掉前任决瞳,我火速辦了婚禮,結(jié)果婚禮上左权,老公的妹妹穿的比我還像新娘皮胡。我一直安慰自己,他們只是感情好赏迟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,542評(píng)論 6 385
  • 文/花漫 我一把揭開白布屡贺。 她就那樣靜靜地躺著,像睡著了一般锌杀。 火紅的嫁衣襯著肌膚如雪甩栈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,802評(píng)論 1 290
  • 那天糕再,我揣著相機(jī)與錄音量没,去河邊找鬼。 笑死突想,一個(gè)胖子當(dāng)著我的面吹牛允蜈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蒿柳,決...
    沈念sama閱讀 38,945評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼漩蟆!你這毒婦竟也來了垒探?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,709評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤怠李,失蹤者是張志新(化名)和其女友劉穎圾叼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捺癞,經(jīng)...
    沈念sama閱讀 44,158評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夷蚊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,502評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了髓介。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惕鼓。...
    茶點(diǎn)故事閱讀 38,637評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖唐础,靈堂內(nèi)的尸體忽然破棺而出箱歧,到底是詐尸還是另有隱情矾飞,我是刑警寧澤,帶...
    沈念sama閱讀 34,300評(píng)論 4 329
  • 正文 年R本政府宣布呀邢,位于F島的核電站洒沦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏价淌。R本人自食惡果不足惜申眼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,911評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝉衣。 院中可真熱鬧括尸,春花似錦、人聲如沸买乃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剪验。三九已至肴焊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間功戚,已是汗流浹背娶眷。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啸臀,地道東北人届宠。 一個(gè)月前我還...
    沈念sama閱讀 46,344評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像乘粒,于是被迫代替她去往敵國(guó)和親豌注。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,500評(píng)論 2 348

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

  • 官方文檔: CommonsChunkPlugin options.name or options.names (s...
    yiludege閱讀 1,222評(píng)論 0 2
  • 1.demo結(jié)構(gòu): 2.package.json配置: 3.多種打包情況(未使用CommonsChunkPlugi...
    若邪Y閱讀 4,980評(píng)論 6 7
  • 這個(gè)問題其實(shí)是因?yàn)閣ebpack在每次執(zhí)行的過程中都會(huì)生成一段帶有模塊標(biāo)示的js真正被執(zhí)行的時(shí)候會(huì)用到的腳本 官方...
    Jalon閱讀 2,518評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理灯萍,服務(wù)發(fā)現(xiàn)轧铁,斷路器,智...
    卡卡羅2017閱讀 134,631評(píng)論 18 139
  • 今年以來旦棉,我一直堅(jiān)持跑步齿风,就算前些日子太陽烤的大地都快冒煙了,我仍然堅(jiān)持著哼哧哼哧的跑完了我的里數(shù)和時(shí)間绑洛。每天...
    天天月月閱讀 293評(píng)論 0 0