咱們用webpack
打包文件以後,會生成一個編譯壓縮過的js
文件。若是出現問題,這種代碼是很難排查問題的,沒法定位到源碼。這種時候就須要source map
。javascript
source map
簡單說,source map就是一個信息文件,裏面儲存着位置信息。也就是說,轉換後的代碼的每個位置,所對應的轉換前的位置。
有了它,出錯的時候,除錯工具將直接顯示原始代碼,而不是轉換後的代碼。這無疑給開發者帶來了很大方便。
-- 《JavaScript Source Map 詳解》css
《JavaScript Source Map 詳解》——阮一峯html
source map
的格式webpack
中提供了不少種source map
的格式。 官方地址java
source map
關鍵字eval
:使用eval
包裹模塊代碼source map
:產生.map
文件cheap
:不包含列信息inline
:將.map
做爲DataURI
嵌入,不單獨生成.map
文件module
:包含loader
的sourcemap
source map
的使用通常來講,咱們在開發環境使用,線上環境是關閉的。webpack
咱們來跑一下幾個經常使用格式的例子。web
簡單初始化一個項目npm
.
├── dist
├── package-lock.json
├── package.json
├── src
│ ├── index.js
│ └── style.css
└── webpack.config.js
複製代碼
eval
devtool: 'eval'
複製代碼
而後npm run build
json
咱們能夠在打包文件最下面發現這麼一行代碼,行尾會告訴你源碼的位置bash
source-map
webpack.config.js
咱們設置一下:webpack-dev-server
devtool: 'source-map'
複製代碼
build
以後咱們發現,會有兩個生成文件
在bundle.js
最後一行,會告訴你須要找哪個對應的.map
文件
inline-source-map
webpack.config.js
咱們設置一下:
devtool: 'inline-source-map'
複製代碼
build
以後咱們發現只有一個文件,這是由於加了inline以後不會獨立生成.map
文件,而是把.map
文件以dataURL
的方式嵌入到頁面裏。
在實際開發環境中,使用source-map
或者inline-source-map
模式debugger
,能夠直接看到源代碼,很是方便。
webpack學習之路(六)hash/chunkHash/contentHash
webpack學習之路(五)loader初識及經常使用loader介紹
webpack學習之路(四)webpack-hot-middleware實現熱更新
webpack學習之路(三)webpack-dev-middleware
webpack學習之路(二)webpack-dev-server實現熱更新
I am moving forward.