使用sourcemap是在开发或者生成环境中,方便调试,比如定位报错信息
设置sourcemap,devtool有很多个值可以设置,选择一种 source map 风格来增强调试过程。不同的值会明显影响到构建(build)和重新构建(rebuild)的速度。
devtool: "source-map"
生成完整的source map 文件
// webpack.config.js
const path = require("path");
module.exports = {
mode: "development",
devtool: "source-map",
entry: "./src/main.js",
output: {
path: path.resolve(__dirname, "./build"),
filename: "bundle.js",
clean: true,
},
};
转换后的代码最后一行加注释,指向sourcemap, 如://# sourceMappingURL=bundle.js.map 浏览器根据注释,查找sourcemap,并且根据sourcemap还原代码,方便调试, 浏览器设置中performance里面的source里面的enable javascript source maps 要打开,默认打开的
devtool: false,
不生成sourcemap文件
devtool: "none",
不可以自己手写,不写devtool,在生产环境下,就是默认不生成
devtool: "eval"
也不生成sourcemap文件,可以还原源代码 报错行定位不太准确
devtool: "eval-source-map"
会生成sourcemap,但是以DataUrl形式添加在eval函数后面
devtool: "inline-source-map"
会生成sourcemap,但是以DataUrl形式添加在打包文件后面
devtool: "cheap-source-map"
跟 devtool: "source-map"相比,信息更少
devtool: "cheap-module-source-map"
对loader处理过的代码打包效果更好
devtool: "hidden-source-map"
会生成source map文件,但是没有对这个文件的引用,没有source map信息 可以手动添加引用 //# sourceMappingURL=bundle.js.map
devtool: "nosources-source-map"
不会生成源代码文件,只有错误提示信息
总结
开发阶段,推荐‘source-map’(vue脚手架默认)或者'cheap-module-source-map'(react脚手架默认值),获取更多调试信息;
测试阶段也和开发阶段一样;
生产上不写,不需要sourcemap,节省带宽,也是为了代码安全