大佬教程收集整理的这篇文章主要介绍了webpack选择性编译(打包去除测试数据),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是初稿,图稍后补上~
程序在开发的过程中,免不了打印调试用的日志,以及测试流程时伪造的数据。这些@L_489_0@是不能出现在生成环境上的。
这意味着在程序打包前,需要把相关@L_489_0@剔除掉。
这些事情用人手去做很麻烦,很容易疏漏。而且打包出来测试时遇到了bug,又得重新把测试@L_489_0@添加回去。重复整个繁琐的过程。
既然人工做这么麻烦而且@R_57_10197@,那能不能用程序帮我们完成这些事情呢?
当然可以,用选择性编译技术就行,本文就介绍在webpack下解决这一问题的方法。
其实这个方法在webpack官网就有提到,本文只是提供相关示例及做一些延伸。
选择性编译是笔者自己瞎想出来的名称,不知道用的对不对。
首先,先让我们看一个选择性打印日志的示例。
new webpack.DefinePlugin({ 'process.env': config.dev.env,IS_DEV: JSON.Stringify(true),}),
new webpack.DefinePlugin({ 'process.env': config.dev.env,IS_DEV: JSON.Stringify(false),
if (IS_DEV) { console.log('this is dev env'); } else { console.log('this is prod env'); }
用if逻辑判断来输出log可能略显繁琐,其实对于控制台输出的日志。我们可以通过UglifyJs在打包时来剔除掉。
具体操作:
打开build/webpack.prod.conf.js文件,添加如下语句
compress: { warnings: false,// 去除warning警告 drop_debugger: true,// 发布时去除debugger语句 drop_console: true // 发布时去除console语句 },
如果想只去除console.log保留console.error等错误提示。可以指定去除特定的函数
compress: { warnings: false,// 去除warning警告 pure_funcs: ['console.log'],// 配置发布时,不被打包的函数 // drop_debugger: true,// 发布时去除debugger // drop_console: true // 发布时去除console }
什么叫不可达@L_489_0@?就是无论什么情况下都不会被运行的@L_489_0@。
例如我们在条件编译打包出来的@L_489_0@中
if (false) { console.log('this is dev env'); } else { console.log('this is prod env'); }
console.log('this is dev env');就是不可达@L_489_0@。
我们同样可以使用UglifyJs的功能把这部分无用@L_489_0@去除掉。让条件编译不留痕迹。
具体配置如下:
compress: { warnings: false,// 去除warning警告 dead_code: true,// 去除不可达@L_489_0@ },sourceMap: true
UglifyJs还用很多强大的功能,如@L_489_0@混淆,压缩,重拍版等。
这里附上UglifyJs官方网址。
英文不好的同学还可以查看对应的中文文档(其实这才是重点)。
以上是大佬教程为你收集整理的webpack选择性编译(打包去除测试数据)全部内容,希望文章能够帮你解决webpack选择性编译(打包去除测试数据)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。