webpack核心,SourceMap配置

2020-08-10  本文已影响0人  喜剧之王爱创作
0.jpg

什么是SourceMap?

在讲SourceMap配置之前,我们先来认识一下什么是SourceMap,首先我们打开之前我们练习的代码,对项目结构做一些更改,我们修改index.js的内容为

console.log('hello world')

修改配置文件为

module.exports = {
    mode: 'development',
    devtool: 'none',
    entry: {
        main: './src/index.js',
    },
...

因为我们在development模式下,是默认开启SourceMap的,现在我们手动将它关掉。
然后打包,运行/dist/index.html发现代码没有问题,这时候,我们故意将console打错,随便写个字段,这时候打包运行代码,你会发现页面报这样的错

捕获.PNG
但我们点击右边提示进入的代码片段,却是/dist/main下的代码,但我们希望代码写错了以后,是直接告诉我们源代码哪里出错了,就像上面的情况,我们希望是告诉我们是在index.js的第一行代码写错了
那我们就可以通过SourceMap来解决这个问题

SourceMap是一种映射关系,他知道上面dist目录下的第96行代码对应着src目录下的第一行代码

所以我们就可以知道。其实是src目录下的index.js下的第一行出错了,我们接下来在配置中开启sourceMap

module.exports = {
    mode: 'development',
    devtool: 'source-map',
    entry: {
        main: './src/index.js',
    },
...

这时候,我们再打包运行,这时候再通过地址定位到出错代码的时候,就直接定位到index.js了。 这时候你会发现在dist目录下会生成一个map.js文件,这个文件所对应的就是这种映射关系。
我们打开官网就会发现,在配置项devtool项下,其实就是在配置sourceMap,我们也发现配置项也不止我们配置的一种,那么对着文档自己试一试吧

最佳实践

在平常的开发中,这里建议大家本地开发环境就用cheap-module-eval-source-map,这样提示错误信息也是相对来说比较全面的。打包速度也是相对来说比较快的。
在生产模式下,也就是production模式下,我们一般都是打包代码上线,不去开启SourceMap的,但如果我们想要看出比较详细的错误信息,我们可以配置cheap-module-source-map,这样的效果相对来说也会好一点。

写在最后

这里我们讲了sourceMap的用法和最佳配置,有想了解SourceMap具体原理的同学可以看我下面推荐的两篇文章
https://segmentfault.com/a/1190000008315937
阮一峰大神的博客

上一篇下一篇

猜你喜欢

热点阅读