webpack devtool配置簡(jiǎn)單對(duì)比

一直對(duì)webpack的devtool配置不太了解,自己把每個(gè)配置都試了一下爽雄,做個(gè)簡(jiǎn)單的總結(jié)
  • devtool是干什么的跌宛?

Choose a developer tool to enhance debugging.
其實(shí)就是選擇一種調(diào)試代碼的方式

  • 目錄結(jié)構(gòu)


    QQ圖片20161027140919.png
  • 配置信息webpack.config.js


    YW8GUF{(@PMJLZ3IUJQHQQK.png
  • page1/index.js代碼
require('js/common/header.js');
function page1(){
  document.write('hello page1');
}
  • 究竟有哪些調(diào)試方式呢它改?
1.eval()

eval- Each module is executed with eval and //@ sourceURL

不支持IE8
可以設(shè)斷點(diǎn)調(diào)試患亿,不顯示列信息,每個(gè)js模塊代碼用eval()執(zhí)行厚脉,并且在生成的每個(gè)模塊代碼尾部加上注釋?zhuān)鏦EBPACK FOOTER习寸;module id(模塊在數(shù)組中的索引) ;sourceURL(原js路徑)傻工。不會(huì)生成.map文件

代碼示例
//打包后的部分js代碼
([
/* 0 */
/***/ function(module, exports, __webpack_require__) {

    eval("module.exports = __webpack_require__(1);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** multi p1\n ** module id = 0\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///multi_p1?");

/***/ },
/* 1 */
/***/ function(module, exports, __webpack_require__) {

    eval("__webpack_require__(2);\r\nfunction page1(){\r\n  document.write('hello page1');\r\n}\r\n\r\n\r\n\n\n/*****************\n ** WEBPACK FOOTER\n ** d:/webpack/src/js/page1/index.js\n ** module id = 1\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///d:/webpack/src/js/page1/index.js?");

/***/ },
/* 2 */
/***/ function(module, exports) {

    eval("function header(){\r\n  document.write('hello header');\r\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** d:/webpack/src/js/common/header.js\n ** module id = 2\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///d:/webpack/src/js/common/header.js?");

/***/ }
/******/ ]);
2.source-map

A SourceMap is emitted. See also output.sourceMapFilename

可以設(shè)斷點(diǎn)調(diào)試霞溪,不顯示列信息,生成相應(yīng)的.Map文件中捆,并在合并后的代碼尾部加上注釋//# sourceMappingURL=**.js.map 鸯匹,可以看到模塊代碼并沒(méi)有被eval()包裹,此種模式并沒(méi)有將調(diào)試信息放入D打包后的代碼中泄伪,保持了打包后代碼的簡(jiǎn)潔性


QQ截圖20161028085447.png
代碼示例
//打包后的部分js代碼
/* 1 */
/***/ function(module, exports, __webpack_require__) {
    __webpack_require__(2);
    function page1(){
      document.write('hello page1');
    }
/* 2 */
/***/ function(module, exports) {
    function header(){
      document.write('hello header');
    }
/******/ ]);
//# sourceMappingURL=bundle.js.map
3.eval-source-map

Each module is executed with eval and a SourceMap is added as DataUrl to the eval

不能設(shè)斷點(diǎn)調(diào)試殴蓬,不顯示列信息,可以用手動(dòng)加入debugger調(diào)試;參考第一種eval模式蟋滴,跟eval不一樣的是其用base64存儲(chǔ)map信息染厅,不會(huì)生成.Map文件,Map信息以Base64格式存放在每個(gè)模塊代碼的尾部

代碼示例
/* 1 */
 function(module, exports, __webpack_require__) {
    eval("__webpack_require__(2);\r\nfunction page1(){\r\n  document.write('hello page1');\r\n}\r\n\r\n\r\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZDovd2VicGFjay9zcmMvanMvcGFnZTEvaW5kZXguanM/OGYwYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxLmpzIiwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgnanMvY29tbW9uL2hlYWRlci5qcycpO1xyXG5mdW5jdGlvbiBwYWdlMSgpe1xyXG4gIGRvY3VtZW50LndyaXRlKCdoZWxsbyBwYWdlMScpO1xyXG59XHJcblxyXG5cclxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBkOi93ZWJwYWNrL3NyYy9qcy9wYWdlMS9pbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0=");
/* 2 */
/***/ function(module, exports) {
    eval("function header(){\r\n  document.write('hello header');\r\n}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZDovd2VicGFjay9zcmMvanMvY29tbW9uL2hlYWRlci5qcz85MDZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSIsImZpbGUiOiIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gaGVhZGVyKCl7XHJcbiAgZG9jdW1lbnQud3JpdGUoJ2hlbGxvIGhlYWRlcicpO1xyXG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBkOi93ZWJwYWNrL3NyYy9qcy9jb21tb24vaGVhZGVyLmpzXG4gKiogbW9kdWxlIGlkID0gMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ==");
/***/ }
4. cheap-source-map

A SourceMap without column-mappings. SourceMaps from loaders are not used

可以設(shè)斷點(diǎn)調(diào)試津函,不顯示列信息肖粮,生成相應(yīng)的.Map文件,可參考source-map尔苦,不包含 loader 的 sourcemap

代碼示例
/* 1 */
/***/ function(module, exports, __webpack_require__) {
    __webpack_require__(2);
    function page1(){
      document.write('hello page1');
    }
/* 2 */
/***/ function(module, exports) {
    function header(){
      document.write('hello header');
    }
/***/ }
//# sourceMappingURL=bundle.js.map
5.cheap-module-source-map

A SourceMap without column-mappings. SourceMaps from loaders are simplified to a single mapping per line.
不包含列信息涩馆,同時(shí) loader 的 sourcemap 也被簡(jiǎn)化為只包含對(duì)應(yīng)行的。最終的 sourcemap 只有一份允坚,它是 webpack 對(duì) loader 生成的 sourcemap 進(jìn)行簡(jiǎn)化魂那,然后再次生成的。

參考cheap-source-map

6.cheap-module-eval-source-map

A SourceMap is added as DataUrl to the JavaScript file.

可以設(shè)斷點(diǎn)調(diào)試屋讶,不顯示列信息冰寻,并在合并后的代碼尾部以base64加入map信息

代碼示例
/* 1 */
/***/ function(module, exports, __webpack_require__) {

    __webpack_require__(2);
    function page1(){
      document.write('hello page1');     
    }   
    page1();    
/***/ },
/* 2 */
/***/ function(module, exports) {
    function header(){
      document.write('hello header');
    }
/***/ }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgZTE1NTRhMmQzZDg1ZDEyYTdjNWIiLCJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3BhZ2UxL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9qcy9jb21tb24vaGVhZGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFD
7.hidden-source-map

Same as source-map but doesn’t add a reference comment to the bundle.

跟source-map 一樣,只不過(guò)不在打包后的文件中加入注釋?zhuān)瑪帱c(diǎn)要在打包好的js中加

代碼示例
/* 1 */
/***/ function(module, exports, __webpack_require__) {
    __webpack_require__(2);
    function page1(){
      document.write('hello page1');
    page1();
/***/ },
/* 2 */
/***/ function(module, exports) {
    function header(){
      document.write('hello header');
    }
/***/ }
webpack devtool調(diào)試模式不單單只支持這幾種皿渗,還可以自己組合

Combinations are possible. hidden, inline, eval and pragma style are exclusive.

例如:cheap-module-eval-source-map

據(jù)說(shuō) cheap-module-eval-source-map 絕大多數(shù)情況下都會(huì)是最好的選擇斩芭,這也是下版本 webpack 的默認(rèn)選項(xiàng)。

但是親測(cè)在chrome下不能打斷點(diǎn)

QQ截圖20161028173032.png

來(lái)自官網(wǎng)的對(duì)比圖

rr.png

先寫(xiě)到這乐疆,改日再完善

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末划乖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子挤土,更是在濱河造成了極大的恐慌琴庵,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仰美,死亡現(xiàn)場(chǎng)離奇詭異迷殿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)咖杂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)庆寺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人诉字,你說(shuō)我怎么就攤上這事懦尝。” “怎么了壤圃?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵陵霉,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我伍绳,道長(zhǎng)踊挠,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任冲杀,我火速辦了婚禮效床,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘漠趁。我一直安慰自己扁凛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布闯传。 她就那樣靜靜地躺著谨朝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甥绿。 梳的紋絲不亂的頭發(fā)上字币,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音共缕,去河邊找鬼洗出。 笑死,一個(gè)胖子當(dāng)著我的面吹牛图谷,可吹牛的內(nèi)容都是我干的翩活。 我是一名探鬼主播阱洪,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼菠镇!你這毒婦竟也來(lái)了冗荸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤利耍,失蹤者是張志新(化名)和其女友劉穎蚌本,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體隘梨,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡程癌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轴猎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嵌莉。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖税稼,靈堂內(nèi)的尸體忽然破棺而出烦秩,到底是詐尸還是另有隱情,我是刑警寧澤郎仆,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布只祠,位于F島的核電站,受9級(jí)特大地震影響扰肌,放射性物質(zhì)發(fā)生泄漏抛寝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一曙旭、第九天 我趴在偏房一處隱蔽的房頂上張望盗舰。 院中可真熱鬧,春花似錦桂躏、人聲如沸钻趋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蛮位。三九已至,卻和暖如春鳞绕,著一層夾襖步出監(jiān)牢的瞬間失仁,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工们何, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萄焦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓冤竹,卻偏偏與公主長(zhǎng)得像拂封,于是被迫代替她去往敵國(guó)和親茬射。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

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