Source maps
Source maps in Chrome
源代码通过转变后,调试就成了问题:在浏览器里调试时,如何去找到原始代码。 Source maps 通过在原始代码和转变过的代码之间提供一个映射来解决这个问题。除了js的编译,也适用于样式表。 如果使用webpack 4 和 mode选项,webpack 会在development 模式自动生成source maps。production模式需要小心使用
Inline Source Maps and Separate Source Maps
webpack能生成单独或内联的source map 文件。内联映射表在开发模式
Inline Source Map Types
webpack提供多种inline source map。通常eval是出发点,推荐cheap-module-eval-source-map作为速度和质量的折衷当在谷歌和火狐浏览器中可靠的工作时 下列例子的源代码只有console.log('Hello world')并且webpack.NamedModulesPlugin用来保持易于理解的输出
devtool: "eval"
devtool: "eval"eval生成的代码把每个模块包裹在eval函数中
webpackJsonp([1, 2], {
"./src/index.js": function(module, exports) {
eval("console.log('Hello world');\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.js\n// module id = ./src/index.js\n// module chunks = 1\n\n//# sourceURL=webpack:///./src/index.js?")
}
}, ["./src/index.js"]);devtool: "cheap-eval-source-map"
devtool: "cheap-eval-source-map"cheap-eval-source-map更进一步并且包含用作data url 的base64编码的代码。输出结果只有行数据而丢失了列映射 .map
解码上面的base64字符串,将得到以下输出
devtool: "cheap-module-eval-source-map"
devtool: "cheap-module-eval-source-map"cheap-module-eval-source-map是同样的方式,还有更高的质量和更低的性能 .map
解码上面的base64字符串,将得到以下输出
devtool: "eval-source-map"
devtool: "eval-source-map"eval-source-map是在inline选项中质量最高的,也是最慢的因为它输出了更多的数据
这次可以为浏览器提供更多的映射数据
Separate Source Map Types
webpack能够生成生产环境友好的source maps。这个生成以.map单独的文件,并且浏览器会按需加载。 source-map 在这里是合理的默认值。尽管花了更多的时间生成source maps,但是获取了更好的质量。
devtool: "cheap-source-map"
devtool: "cheap-source-map"cheap-source-map和上面的cheap选项相似。会忽略列映射,来自加载器的source maps不会被使用。 .map文件
源代码最后会包含//# sourceMappingURL=main.9a...18.js.map这类注释来映射上面这个文件
devtool: "cheap-module-source-map"
devtool: "cheap-module-source-map"cheap-module-source-map和以上的一样。另外:来自加载器的soucre maps被简化为每行一个映射。 .map文件
注意 如果代码使用了压缩cheap-module-source-map会被破坏
devtool: "hidden-source-map"
devtool: "hidden-source-map"hidden-source-map和source-map一样, 除了:它不会在源代码中添加source maps的引用。如果你不想直接把source maps暴露给开发者工具而是想要跟踪堆栈,这很方便。
devtool: "nosources-source-map"
devtool: "nosources-source-map"nosources-source-map创建了一个没有sourcesContent的source map。你仍然可以跟踪堆栈。如果你不想暴露源代码给客户端这个选项是有用的
devtool: "source-map"
devtool: "source-map"source-map提供了最好的质量和完整的结果,但同时也是最慢的选择。 .map文件
Last updated
Was this helpful?