Q: Webpack 的 devtool 配置有哪些?eval, source-map, cheap-module-source-map 的区别?如何选择生产环境的 Source Map?
Source Map 是一种将压缩、混淆后的代码映射回源代码的技术。它记录了代码的行号、列号、原始变量名等信息。
Webpack 提供了 20 多种 source-map 配置,看似复杂,其实都有规律可循:
eval() 包裹执行。速度极快,但 map 信息很少,适合开发时用。.map 文件。最完整,包含列信息,但最慢。推荐:eval-source-map 或 eval-cheap-module-source-map
推荐:hidden-source-map 或 none
便于排查线上 bug。但为了安全,通常会在 Nginx 配置里禁止访问 .map 文件,只允许内网或监控平台访问。
Source Map 本质是一个 JSON 文件,包含 mappings 字段。这个字段是一个经过 Base64 VLQ (Variable Length Quantity) 编码的字符串。它可以极其精简地表示行列映射关系。
eval-cheap-module-source-map. Fast & Debuggable.hidden-source-map + Sentry. Secure.