4-2 webpack使用mapsource调试

一.什么是Sourcemap

Sourcemap是为了解决在实际运行代码(打包后的)出现问题时,无法定位到开发环境中的源代码的问题。为了让资源更小,加载速度更快,在js项目部署之前都会将代码混淆压缩,将less、sass 、typeScript 等其他语言编译成 css 或 JS ,这样就可以使浏览器识别。但是这样也带来了影响,当代码中出现问题时,只能定位到压缩之后的代码,出错以后只会告诉我们第几行有错误。而压缩之后的代码一般就只有一两行,每一行上万字符,对排除检查几乎没有帮助。而sourceMap的存在就是为了解决这个问题,它帮助我们将压缩的代码在控制台中转换成源码。

二.devtool

如果需要启用Sourcemap,就需要用到devtool。
devtool选项:
在这里插入图片描述
(1)eval
每个模块都使用 eval() 执行,每一个模块后会增加sourceURL来关联模块处理前后的对应关系。如下图:
在这里插入图片描述
在这里插入图片描述
由于会映射到转换后的代码,而不是映射到原始代码(没有从 loader 中获取 source map),所以不能正确的显示行数。因为不需要生成模块的sourcemap,因此打包的速度很快。
js调试使用方法:
在module.exports = {}里配置:devtool:"eval",

(2)source-map
source-map会为模块生成独立的soucemap文件。
在这里插入图片描述
打包后的模块在模块后面会对应引用一个.map文件,同时在打包好的目录下会生成相应的.map文件。如下图:
在这里插入图片描述
js调试使用方法:
在module.exports = {}里配置:devtool:"source-map",

(3)Inline
与source-map不同,增加inline属性后,不会生成独立的.map文件,source map 转换为 DataUrl 后添加到 bundle 中。如下所示:

(4)cheap
cheap属性在打包后同样会为每一个模块生成.map文件,但是与source-map的区别在于cheap生成的.map文件会忽略原始代码中的列信息,也不包含loader的sourcemap。

(5)module
包含了loader模块之间的sourcemap,将 loader source map 简化为每行一个映射。

css调试
调试css时需要将压缩css的插件注释掉
在这里插入图片描述
Css sourcemap设置:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xt_123456/article/details/106197000
4-2