source map

109 阅读2分钟

false

错误直接定位到打包后的文件位置

none

不可配置,mode为production的默认配置,错误直接定位到打包后的文件位置(但是被压缩成一行了)

eval

mode为development的默认配置.

打包后的原文件执行代码被eval包裹,并在最后面加上//# sourceURL=webpack://webpack-test/./src/index.js,映射到转换后的代码,所以报错,在原文件可能会有错误,在转化后的代码知道错误在哪一行哪一列 image.png

image.png

image.png

source-map

增加打包后的原文件的映射文件,在打包后的文件末尾增加//# sourceMappingURL=main.js.map指定原文件的映射文件是哪个,知道错误在哪一行哪一列 image.png

image.png image.png

eval-source-map

打包后的原文件执行代码被eval包裹,并且,source-map被转化为base64放在后面,知道错误在哪一行哪一列 image.png

image.png

image.png

cheap-source-map

生成映射文件,错误信息只定位到行,不定位到列,并且忽略被loader处理的文件(不能准确定位)

image.png

cheap-module-source-map

cheap-module为固定搭配,生成映射文件,错误信息只定位到行,不定位到列,并且可以很好的定位到被loader处理过后的位置

image.png image.png cheap-source-map的情况 image.png cheap-module-source-map的情况

image.png

nosources-source-map

只提供报错信息,知道错误在哪一行哪一列,在浏览器追溯不到报错的文件

image.png

inline-source-map

不生成映射文件,但是将映射内容直接转成base64,放在打包文件最后,知道错误在哪一行哪一列

image.png

hidden-source-map

生成映射文件,但是再打包后的文件里面,不添加映射文件注释

总结

[inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map 打包后映射到原文件的内容的处理方式-是否在浏览器可以追溯到原文件-是否开启低开销(低开销是否处理loader处理的内容)-是否需要映射到原文件

建议

开发及测试环境

source-map(Vue的设置)或者cheap-module-source-map(react的设置)

生产环境

不设置或者false