作為一個程序員每天的大部分工作就是調試自己寫的程序,那我們使用了webpack后,所以代碼都打包到了一起,給調試帶來了麻煩,但是webpack已經為我們充分考慮好了這點,它支持生產Source Maps來方便我們的調試。
在使用webpack時只要通過簡單的devtool配置,webapck就會自動給我們生產source maps 文件,map文件是一種對應編譯文件和源文件的方法,讓我們調試起來更簡單。
四種選項
在配置devtool時,webpack給我們提供了四種選項。
source-map:在一個單獨文件中產生一個完整且功能完全的文件。這個文件具有最好的source map,但是它會減慢打包速度;
cheap-module-source-map:在一個單獨的文件中產生一個不帶列映射的map,不帶列映射提高了打包速度,但是也使得瀏覽器開發者工具只能對應到具體的行,不能對應到具體的列(符號),會對調試造成不便。
eval-source-map:使用eval打包源文件模塊,在同一個文件中生產干凈的完整版的sourcemap,但是對打包后輸出的JS文件的執行具有性能和安全的隱患。在開發階段這是一個非常好的選項,在生產階段則一定要不開啟這個選項。
cheap-module-eval-source-map:這是在打包文件時最快的生產source map的方法,生產的 Source map 會和打包后的JavaScript文件同行顯示,沒有影射列,和eval-source-map選項具有相似的缺點。
四種打包模式,有上到下打包速度越來越快,不過同時也具有越來越多的負面作用,較快的打包速度的后果就是對執行和調試有一定的影響。
個人意見是,如果大型項目可以使用source-map,如果是中小型項目使用eval-source-map就完全可以應對,需要強調說明的是,source map只適用於開發階段,上線前記得修改這些調試設置。
簡單的配置:
module.exports = {
//devtool調試
devtool: 'eval-source-map',
entry: __dirname + "/app/main.js",
output: {
path: __dirname + "/public",
filename: "bundle.js"
}
}
去除打包生成的map文件
productionSourceMap: false
調試在開發中也是必不可少的,但是一定要記得在上線前一定要修改webpack配置,在打出上線包。
更多webpack相關例子我放到Github上 → 傳送門