webpack学习笔记(10)-高级篇(1)-提升开发体验篇[SourceMap]
为什么需要SourceMap
开发时我们运行的代码是经过
webpack
编译后的,例如下面这个样子:经过
webpack
压缩过后, 所有 css 和 js 合并成了一个文件,并且多了其他代码。此时如果代码运行出错那么提示代码错误位置我们是看不懂的。一旦将来开发代码文件很多,那么很难去发现错误出现在哪里。- 这里故意设置
sum.js
出错(调用两次 return 致使代码出现问题
)
// 简单的加法函数[es6语法,数组的累加器方法(reduce)]
export default function sum (...args){
return args.reduce((p , c) => p + c , 0)();//这里调用两次return导致代码出错
}- 此时浏览器的控制台报告错误如下:
- 这里故意设置
由此可见,我们看到控制台报错是编译后的,并非源码
因此,我们需要更加准确的错误提示,来帮助我们更好的开发代码。
什么是SourceMap
SourceMap
(源代码映射)是一个用来生成源代码与构建后代码一一映射的文件的方案。- 它会生成一个
xxx.map
文件,里面包含源代码和构建后代码每一行、每一列的映射关系。当构建后代码出错了,会通过xxx.map
文件,从构建后代码出错位置找到映射后源代码出错位置,从而让浏览器提示源代码文件出错位置,帮助我们更快的找到错误根源。
SourceMap
怎么用
- 通过查看Webpack DevTool 文档可知,SourceMap 的值有很多种情况.
实际开发时我们只需要关注两种情况即可:
开发模式使用: cheap-module-source-map
- 优点:打包编译速度快,只包含行映射
- 缺点:没有列映射
- 开发模式的源码配置如下:(
webpack.dev.js
)
// 使用的是commonjs 的语法格式[node.js] |
生产模式使用:source-map
- 优点:包含行/列映射
- 缺点:打包编译速度更慢
- 生产模式的源码配置如下:(
webpack.pro.js
)
// 使用的是commonjs 的语法格式[node.js] |
开发模式结果展示:
生产模式结果展示:
这里我们就可以看到
xxx.map
映射文件输出浏览器控制台输出报错
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库