当前位置: 首页 > Web前端 > HTML

[vue]vue-cli3配置开发环境,打包并关闭sourceMap

时间:2023-03-28 17:48:12 HTML

接上文[《[Chrome] Chrome Devtools - Sources 中的webpack-internal: //和 webpack:// 目录是怎么来的》](https://segmentfault.com/a/11...)前景总结:前面有个-测试环境中被封杀的项目检测到源码泄露风险。本项目使用vue2编写,使用vue-cli3作为脚手架。查看安全检测报告,在内容截图中,ChromeDevtools-Sources下有两个目录:webpack-internal://和webpack://。在这两个目录下,直接点击文件就可以看到贴近源码的代码。测试环境编译配置没有手动启用sourceMap,编译后的产品中应该不存在sourceMap文件。后来上网查了一下,确实没有sourceMap文件(比如xxx.js.map)。上面已经说了,问题出在webpack-internal://和webpack://这两个目录,以及这两个文件夹是怎么来的。webpack-internal://和webpack://目录是浏览器遍历文件,解析dataURL信息(sourceURL和sourceMappingURL)后,一一生成的。现在的问题是这些dataURL信息(sourceURL和sourceMappingURL)在编译的时候怎么不输出。我搜索了vue-cli的文档,找到了一个只控制生产环境的sourceMap是否开启的productionSourceMap项https://cli.vuejs.org/zh/conf...然后我就猜到了,原因是dataURL是在非生产环境中,在vue-cli的默认配置中,启用了sourceMap(即devtool!==false和devtool!==undefined)https://www.webpackjs.com/con...试试你自己:1.尝试通过chainWebpack,将devtools设置为false。设置后,dataURL仍然会出现在编译后的产品文件的内容中。失败。2、尝试通过configureWebpack将devtool设置为false。设置后,编译后的产品文件内容中没有dataURL,部署到线上测试环境时不会出现webpack-internal://和webpack://目录。成功。既然通过修改devtool设置关闭了sourceMap的输出,并且编译后的产品中的dataURL成功消失,那么我们可以断定非生产环境下vue-cli的devtool配置肯定不是假的。总结:通过配置configureWebpack项,将devtool设置为false,可以使编译后的产品中的dataURL信息消失。同步更新到你的语雀https://www.yuque.com/diracke...