开启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中添加配置:
-
增加映射文件,可以帮我们调试源代码
devtool:'source-map' -
不会产生单独的文件,但是可以显示行和列
devtool: 'eval-source-map' -
不会产生列,但是是一个单独的映射文件,产生后可以保留起来,便于调试
devtool: 'cheap-module-source-map' //用的不是很多 -
不会产生文件,而是集成在打包后的文件中,不会产生列
devtool:'cheap-module-eval-source-map' -
取消映射
devtool:false
react-scripts中的wepack.config.js source map 配置:
在打包后的目录build下会增加一个新的映射文件: