zhangdizhangdi

source map 文件(.map)中记录了 编译后的代码行号与原始源代码行号之间的映射关系,浏览器通过这个映射关系找到并展示原始源码。

json
{
  "version": 3,
  "file": "app.min.js",
  "sourceRoot": "",
  "sources": [
    "webpack://project/src/index.js",
    "webpack://project/src/utils.js"
  ],
  "names": ["button", "add", "console"],
  "mappings": "AAAAA,QAAQC,MAAMC,QAAQC,MAAMC,SAASC,CAAC;;...",
  "sourcesContent": ["源码内容1", "源码内容2"]
}
  • version source map 版本
  • file 生成的打包文件名
  • sources 所有原始源文件路径
  • names 源码中变量、函数名(可选)
  • mappings base64 编码的映射信息,记录了打包文件与源码的对应关系
  • sourcesContent 源文件内容(可选),调试时浏览器可以直接展示

浏览器查找源码的优先级如下:

  • sourcesContent(如果存在,直接展示)
  • sources + sourceRoot(拼接出路径,尝试从服务器加载)
  • 通过 devtools 网络面板加载源文件(如 Chrome DevTools)