美文网首页
webpack核心,SourceMap配置

webpack核心,SourceMap配置

作者: 喜剧之王爱创作 | 来源:发表于2020-08-10 21:30 被阅读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,我们也发现配置项也不止我们配置的一种,那么对着文档自己试一试吧

  • inline-source-map: 将不再生成map.js文件,而是通过data-url的形式直接注入到我们的main.js文件中
  • inline-cheap-source-map: 其中cheap的意思是,当我们代码量很大的时候,一般报错会精确到第几行的第几个字符上,这样就会比较耗费性能,我们使用cheap字段就会省去精确到第几个字符的操作,并且,加上cheap字段后,sourceMap只会帮我们映射我们的业务代码和打包文件之间的关系,将不会在去管第三方的一些引入代码的映射。这样的打包性能就会比inline-source-map高了。
  • cheap-module-source-map其中module的作用是我们开启对第三方模块的映射
  • eval,我们设置了eval后会发现表面上是一样的,但其实看main.js中,eval选项是通过eval的形式,注入进了打包代码代码一种映射关系,这种效率是最高的,但是,当我们遇到比较复杂的代码的时候,他提出出来的错误内容可能并不会很全面。
最佳实践

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

写在最后

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

相关文章

  • webpack核心,SourceMap配置

    什么是SourceMap? 在讲SourceMap配置之前,我们先来认识一下什么是SourceMap,首先我们打开...

  • Webpack SourceMap 配置

    最近项目中遇到了sourcemap不生效的问题,而且是有的项目生效,有的项目不生效, 经过一番查找资料,最终将问题...

  • webpack SourceMap配置(9)

    获取全套webpack 4.x教程,请访问瓦力博客 sourceMap是用做源码映射,当我们编写代码,webpac...

  • [Node] 使用VSCode调试ES6

    1. 配置webpack+babel 这部分与前端工程的配置方式相同,只多了SourceMap和npm scrip...

  • 开始使用webpack

    作者:叶茂;标签: webpack webpack配置文件 webpack配置文件是使用webpack的核心,会配...

  • [webpack] sourcemap

    1、关于SourceMap JS代码在实际项目中包括框架以及各种函数库,实际需要进行优化、压缩、编译后才能上线, ...

  • 02-webpack核心基础-Webpack中sourcemap

    一:什么是SourceMap? 我们在项目进行打包后,会将开发中的多个文件代码打包到一个文件中,并且经过压缩,去掉...

  • 2019-12-25 关于google浏览器的坑(js代码无高亮

    类似于以下这样:颜色全灰,鼠标指向变量不显示变量内容,一开始以为是webpack配置sourceMap的锅,折腾了...

  • Webpack打包工具

    webpack的核心概念:Entry,Output,Loaders,Plugins。webpack的默认配置文件是...

  • webpack(3.0)打包工具简介

    webpack的核心概念:Entry,Output,Loaders,Plugins。webpack的默认配置文件是...

网友评论

      本文标题:webpack核心,SourceMap配置

      本文链接:https://www.haomeiwen.com/subject/sicsdktx.html