接上文
[《[Chrome] Chrome Devtools - Sources 中的webpack-internal: //和 webpack:// 目录是怎么来的》](https://segmentfault.com/a/11...)
前景提要:
有个前端我的项目在测试环境被检测出源码泄露危险,这个我的项目是vue2写的,用的是vue-cli3作为脚手架。
看平安检测的报告,内容截图里,是Chrome Devtools - Sources上面有webpack-internal: //和 webpack://两个目录。在这两个目录下,间接点击文件,能够看到靠近源码的代码。
测试环境编译配置没有手动开启sourceMap,编译产物里不应该存在sourceMap文件。起初去查看了下network,也的确没有sourceMap文件(如xxx.js.map之类的文件)呈现。
上文曾经说了问题出在webpack-internal: // 和 webpack:// 这两个目录,也讲述了这两个文件夹是怎么来的。
webpack-internal:// 和webpack:// 目录,是浏览器遍历文件,解析dataURL信息(sourceURL和sourceMappingURL)后再逐个生成的。
当初问题是这些个dataURL信息(sourceURL和sourceMappingURL)怎么在编译时不要产出。
查找了vue-cli的文档
找到了一个productionSourceMap项 仅管制生产环境的sourceMap是否开启
https://cli.vuejs.org/zh/conf...
那么我有个猜想,呈现dataURL的起因是在非生产环境,vue-cli的默认配置里,sourceMap是开启的(即 devtool !== false且 devtool !== undefined)
https://www.webpackjs.com/con...
入手尝试:
1、尝试通过chainWebpack,将devtool设置为false。设置之后,编译产物文件内容中仍然会呈现dataURL。失败。
2、尝试通过configureWebpack,将devtool设置为false。设置之后,编译产物文件内容中没有dataURL了,部署到线上测试环境,也不会呈现webpack-internal:// 和webpack:// 目录了。胜利。
既然通过批改devtool的设置敞开sourceMap输入,胜利让编译产物中的dataURL隐没,那么咱们能够判定非生产环境时,vue-cli的devtool配置必定不是false。
总结:通过配置configureWebpack项,将devtool设置为false,即可使编译产物中的dataURL信息隐没。
同步更新到本人的语雀
https://www.yuque.com/diracke...