webpack_source-map

source-map:一种 提供源代码到构建后代码的映射技术(如果构建后代码出错,可以通过映射追踪到源代码错误)

格式

[inline- | hidden- | eval-][nosources-][cheap-[module-]]source-map

可以任意排列,但 [] 的顺序不能乱

具体介绍:

  • source-map: 在外部生成一个文件
    在控制台会显示 错误代码准确信息 和 源代码的错误位置

  • inline-source-map: 内嵌到bundle.js中
    只生成一个source-map
    在控制台会显示 错误代码准确信息 和 源代码的错误位置

  • hidden-source-map: 外部
    错误代码错误原因,源代码的错误位置
    不能追踪源代码错误,只能提示到构建后代码的错误位置

  • eval-source-map: 内嵌
    每一个文件都生成对应的source-map
    错误代码准确信息,源代码的错误位置

  • nosources-source-map: 外部
    错误代码准确信息,没有任何源代码信息

  • cheap-source-map: 外部
    错误代码准确信息,源代码的错误位置
    只能精准到行

  • cheap-odule-source-map: 外部
    错误代码准确信息,源代码的错误位置
    module会将loader的source-map加入

内嵌与外部的区别: 1.外部生成单独的文件,内嵌没有 2.内嵌构建速度快

如何选择

这么多 source-map 如何选择?

开发环境:速度快,调试更友好

  • 速度快( eval>inline>cheap>··· )
    组合eval-cheap-source-map > eval-source-map

  • 调试更友好
    source-map > cheap-module-source-map > cheap-source-map

  • 最终结果:cheap-module-source-map 和 eval-source-map (vuecli与react脚手架默认),即:cheap-module-eval-source-map

生产环境:源代码要不要隐藏?调试要不要更友好

  • 内嵌会让代码体积变大,所以在生产环境下不用内嵌
    nosources-source-map 全部隐藏
    hidden-source-map 只隐藏源代码,会提示构建后代码错误信息

  • 最终结果:cheap-module-source-map