Source Map 教程
背景:
我公司采用taro+react进行小程序项目开发,前人不知道做了什么配置,项目中 无法通过debugger进行调试,因此想通过sourceMap的配置 实现在source页面打断点进行调试。 内容主要分成两部分:(1)介绍sourceMap以及webpack中如何进行配置 (2)taro中如何配置sourceMap
介绍:源代码地图--映射转换后的代码和源代码之间的关系
1、定义sourcemap 的方式
1.1 在webpack.config.js 文件中使用devtool 定义sourcemap
1.2 webpack中支持的sourcemap 配置类型 (目前共支持26种) webpack.js.org/configurati…
2.常见模式讲解
- eval 模式:使用eval包裹代码模块(这个代码块是转译后的代码,并未进行打包和压缩),不会生成sourcemap文件,速度更快,可以定位源代码所在文件名称,无法定位行列信息
- cheap模式 简单source-map 只可以准确定位到行,定位不到列
- module模式 未经babel 转换过的soucemap
- nosourcemap 生成soucemap文件但不展示
- inline 生成单独的soucemap文件,嵌入到js 文件中
3、推荐
- 开发环境 推荐 ** cheap-module-source-map **
- 生产环境推荐 ** nosources-source-map **
4、taro小程序中如何配置
尽管taro官网中说可以在mini中通过配置sourceMapType可以实现sourceMap的配置,但是根据我个人尝试这样配置并不能生效,
最终,经多几次尝试发现可以通过在chain.merge 中添加 devtool:'source-map' 的方式实现taro中生成source-map
devtool: 'source-map',
<!-- output本来是想排除node_modules中的代码生成.map文件的,但是好像没生效,实际测试用却优化了路径的展示就留着了 -->
output: {
devtoolModuleFilenameTemplate: (info) => {
// 只让 src 文件夹下的代码生成源码映射
if (info.resourcePath.includes('/src/')) {
return `webpack:///${info.resourcePath}`
}
return `webpack:///./${info.resourcePath}`
},
},