最近发现一个react项目使用webpack最后生成的产物里面,没有对应sourcemap文件,定位后发现主要是这些条件都要满足,这里记录下:
-
项目的压缩插件从uglifyjs迁移成了terser,而terser压缩插件不支持cheap-module-source-map模式,仅支持source-map, inline-source-map, hidden-source-map and nosources-source-map
-
webpack配置中的output.filename必须是以js结尾。之前项目的输出文件名是以zip结尾的,是无法生成sourcemap文件的
-
webpack配置中的output.sourceMapFilename可以配置生成的sourcemap文件的路径
最后修改后的webpack配置如下:
{
devtool: 'source-map',
output: {
filename: 'js/xxx.js',
sourceMapFilename: 'sourcemap/xxx.js.map'
...
},
optimization: {
minimize: true,
minimizer: [new TerserPlugin()]
}
}
基本满足以上三点,最后的生成产物就会包含sourcemap文件,对应的js文件底部,也会有响应的注释,指明sourcemap文件的路径