webpack-了解配置source-map

3,580 阅读2分钟

开启source-map,会使build速度很慢。

那么先了解一下source-map是啥。

source map是什么

  • source map,source 指源头、来源,而 map 意为映射、投影,其命名方式就已经基本说明了其具体原理——通过某种方式,将压缩、编译处理过的线上文件映射成文源文件。
  • 源码映射:会单独生成一个sourcemap文件,出错了会标识当前报错的列和行。

source map 的适用场景:

  • 代码压缩(compress/uglify 等)
  • 多文件合并(用于减少 http 请求数)
  • 语言预处理、编译等(es6、jsx 编译成 es5 版本,TypeScript 编译成 JavaScript 等)

为什么要开启source map

  • 当文件中有错误时,且使用的模式是production,打包后的文件是压缩的形式,不好定位找到错误的位置。而source-map就是一个映射文件,点进去看到的错误是源码,而不是压缩后的格式,方便调试。

source map 形式

主要有四种形式,需要在配置文件webpack.config.js中添加配置:

  1. 增加映射文件,可以帮我们调试源代码

     devtool:'source-map'
    
  2. 不会产生单独的文件,但是可以显示行和列

     devtool: 'eval-source-map'
    
  3. 不会产生列,但是是一个单独的映射文件,产生后可以保留起来,便于调试

     devtool: 'cheap-module-source-map'  //用的不是很多
    
  4. 不会产生文件,而是集成在打包后的文件中,不会产生列

     devtool:'cheap-module-eval-source-map'
     
    
  5. 取消映射

     devtool:false
    

react-scripts中的wepack.config.js source map 配置:

在打包后的目录build下会增加一个新的映射文件:

开启source map,可以在浏览器中看到源码文件

关闭source map,看不到源码文件,只有压缩文件

参考文档