webpack之devtool

關(guān)于Devtool

該選項控制是否以及如何生成源映射。官網(wǎng)上給出的可選值有:

其中一些值適合開發(fā),一些用于生產(chǎn)诗赌。對于開發(fā),您通常需要快速的Source Maps秸弛,以bundle的大小為代價境肾,但是對于生產(chǎn),您需要獨立的Source Maps胆屿,這是精確的奥喻,并且支持最小化。

選擇一種源映射樣式非迹,以增強(qiáng)調(diào)試過程环鲤。這些值可以顯著地影響構(gòu)建和重建速度。而不是使用devtool選項還可以使用SourceMapDevToolPlugin / EvalSourceMapDevToolPlugin直接有了更多的選擇憎兽。不要同時使用devtool選項和插件冷离。devtool選項在內(nèi)部添加了插件,所以你最終會得到應(yīng)用兩次的插件纯命。

實例詳解

1.新建print.js

export default function printMe() {

? console.log('武昌魚@222');

}

2.新建index.js

import printMe from './print.js';

function component() {

? var element = document.createElement('div');

? var btn = document.createElement('button');

? btn.innerHTML = 'Click 1me and check 1the console!';

? btn.onclick = printMe;

? element.appendChild(btn);

? return element;

}

document.body.appendChild(component());

3.新建webpack.config.js

const path = require('path');

const CleanWebpackPlugin = require('clean-webpack-plugin');

const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {

? entry: './src/index.js',

? output: {

? ? filename: '[name].js',

? ? path: path.resolve(__dirname, 'dist')

? },

? plugins: [

? ? new CleanWebpackPlugin(['dist']),

? ? new HtmlWebpackPlugin({

? ? ? title: ' webpack之devtool'

? ? })

? ]

};

4.使用不同的devtool選項

none

打包后點擊打印按鈕西剥,console顯示main.js:96,生成代碼如下所示:

eval

eval 模式會把每個 module 封裝到?eval 里包裹起來執(zhí)行亿汞,并且會在末尾追加注釋瞭空。

Each module is executed withevaland//@ sourceURL.

打包之后點擊打印按鈕,console顯示print.js:3,生成代碼如下所示:

source-map

打包之后你會發(fā)現(xiàn)你的 output 目錄下多了一個?index.js.map?文件咆畏,此文件記錄了sourceMap 行列信息如何映射源代碼的信息南捂。點擊打印按鈕,console顯示print.js:3旧找,生成代碼如下所示:

main.js
main.js.map

hidden-source-map

打包后main.js與 source-map 選項相比少了末尾注釋溺健,但 output 目錄下的 index.js.map 沒有少。點擊打印按鈕钮蛛,console顯示main.js:96鞭缭。

inline-source-map

打包后可以看到末尾的注釋 sourceMap 作為?DataURL?的形式被內(nèi)嵌進(jìn)了 bundle中,由于 sourceMap 的所有信息都被加到了bundle中魏颓,整個 bundle 文件變得碩大無比缚去。點擊打印按鈕,console顯示print.js:3琼开,生成代碼如下所示:

main.js

eval-source-map

和 eval 類似,但是把注釋里的?sourceMap 都轉(zhuǎn)為了 DataURL枕荞。console顯示print.js?dc38:2柜候,生成代碼如下所示:

main.js

cheap-source-map

和 source-map 生成結(jié)果差不多。output 目錄下的index.js內(nèi)容一樣躏精。但是 cheap-source-map 生成的 index.js.map 的內(nèi)容卻比 source-map 生成的 index.js.map 要少很多代碼渣刷,我們對比一下上文 source-map 生成的 index.js.map 的結(jié)果,發(fā)現(xiàn)?source?屬性里面少了列信息矗烛,如下所示:

main.js.map

cheap-module-source-map

在一個單獨的文件中生成一個不帶列映射的map辅柴,不帶列映射提高了打包速度,但是也使得瀏覽器開發(fā)者工具只能對應(yīng)到具體的行瞭吃,不能對應(yīng)到具體的列(符號)碌嘀,會對調(diào)試造成不便;

總結(jié)

開發(fā)環(huán)境推薦使用:

1.eval :每個模塊使用eval()和//@ sourceURL執(zhí)行歪架。這是非彻扇撸快。主要缺點是和蚪,它沒有正確顯示行號止状,因為它被映射到轉(zhuǎn)換代碼而不是原始代碼(沒有來自加載器的源映射)。

2.eval-source-map:每個模塊使用eval()執(zhí)行攒霹,而SourceMap作為DataUrl添加到eval()中怯疤。最初它是緩慢的,但是它提供快速的重建速度和產(chǎn)生真實的文件催束。行號被正確映射集峦,因為它被映射到原始代碼。它產(chǎn)生了最優(yōu)質(zhì)的開發(fā)資源。

3.cheap-eval-source-map:與eval-source-map類似少梁,每個模塊都使用eval()執(zhí)行洛口。它沒有列映射,它只映射行號凯沪。它忽略了來自加載器的源代碼第焰,并且只顯示與eval devtool相似的經(jīng)過轉(zhuǎn)換的代碼。

4.cheap-module-eval-source-map:類似于cheap-eval-source-map妨马,在本例中挺举,來自加載器的源映射被處理以獲得更好的結(jié)果。然而烘跺,加載器源映射被簡化為每一行的單個映射湘纵。

生產(chǎn)環(huán)境推薦使用:

1.(none) :(省略devtool選項)-不觸發(fā)SourceMap。這是一個很好的選擇滤淳。

2.source-map:一個完整的SourceMap是作為一個單獨的文件梧喷。它為bundle?添加了引用注釋,因此開發(fā)工具知道在哪里找到它脖咐。

3.hidden-source-map:與source-map相同铺敌,但不向bundle?添加引用注釋。如果您只希望SourceMaps從錯誤報告中映射錯誤堆棧跟蹤屁擅,但不想為瀏覽器開發(fā)工具暴露您的SourceMap偿凭,可以使用此選項。

4.nosources-source-map:一個SourceMap是在沒有源代碼的情況下創(chuàng)建的派歌。它可以用于在客戶機(jī)上映射堆棧跟蹤弯囊,而不暴露所有源代碼。您可以將源映射文件部署到webserver胶果。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匾嘱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子早抠,更是在濱河造成了極大的恐慌奄毡,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贝或,死亡現(xiàn)場離奇詭異吼过,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)咪奖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門盗忱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人羊赵,你說我怎么就攤上這事趟佃∩纫ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵闲昭,是天一觀的道長罐寨。 經(jīng)常有香客問我,道長序矩,這世上最難降的妖魔是什么鸯绿? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮簸淀,結(jié)果婚禮上瓶蝴,老公的妹妹穿的比我還像新娘。我一直安慰自己租幕,他們只是感情好舷手,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著劲绪,像睡著了一般男窟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贾富,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天歉眷,我揣著相機(jī)與錄音,去河邊找鬼祷安。 笑死,一個胖子當(dāng)著我的面吹牛兔乞,可吹牛的內(nèi)容都是我干的汇鞭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼庸追,長吁一口氣:“原來是場噩夢啊……” “哼霍骄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起淡溯,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤读整,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咱娶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體米间,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年膘侮,在試婚紗的時候發(fā)現(xiàn)自己被綠了屈糊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡琼了,死狀恐怖逻锐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤昧诱,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布晓淀,位于F島的核電站,受9級特大地震影響盏档,放射性物質(zhì)發(fā)生泄漏凶掰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一妆丘、第九天 我趴在偏房一處隱蔽的房頂上張望锄俄。 院中可真熱鬧,春花似錦勺拣、人聲如沸奶赠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毅戈。三九已至,卻和暖如春愤惰,著一層夾襖步出監(jiān)牢的瞬間苇经,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工宦言, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留扇单,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓奠旺,卻偏偏與公主長得像蜘澜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子响疚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

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

  • publicPath指定了一個在瀏覽器中被引用的URL地址鄙信。 對于使用 和 加載器,當(dāng)文件路徑不同于他們的本地磁盤...
    飛呀飛哥閱讀 1,699評論 0 0
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺忿晕,特此分享以備自己日后查看装诡,也希望更多的人看到...
    小小字符閱讀 8,164評論 7 35
  • webpack sourceMap 使用說明 時間:2016-09-05 15:23:30作者:zhongxiaw...
    izhongxia閱讀 6,205評論 0 0
  • source maps Webpack打包生成的.map后綴文件,使得我們的開發(fā)調(diào)試更加方便践盼,它能幫助我們鏈接到斷...
    zhangivon閱讀 14,558評論 5 3
  • 在晨曦里靜靜思考人生鸦采、在閑暇的午后靜靜放飛心靈、在蒼茫的夜色里獨享那一片的寧靜咕幻。這一刻赖淤,遠(yuǎn)離所有的喧囂,獨享此刻的...
    創(chuàng)業(yè)中踩的坑閱讀 349評論 0 1