关注并将「趣谈前端」设为星标

每天定时分享技术干货/优秀开源/技术思维

前言

说起console.log调试,不用多说,那是非常的好用,开发中帮助我们解决了不少Bug。我们经常能在开发环境中看见这一坨一坨的console调试。但是生产环境是绝不对不允许出现console信息代码的。你还在手动一个一个删除吗,那得多累啊!

下面我们来看一下这几种方式清除生产环境console无用代码。

基本操作

Webpack配置

uglifyjs-webpack-plugin

uglifyjs-webpack-plugin

我们可以看一下该插件介绍,该插件是用于减少我们代码js代码体积。并且如果安装运行该插件的话,node版本是在v6.9.0+Webpack版本v4.0.0+

官网地址看这里:uglifyjs-webpack-plugin

安装

npm i uglifyjs-webpack-plugin

使用

webpack.config.js文件下进行如下配置。

const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
module.exports = {// 省略...mode: "production",optimization: {minimizer: [new UglifyJsPlugin({uglifyOptions: {// 删除注释output:{comments: false},compress: {drop_console: true, // 删除所有调式带有console的drop_debugger: true,pure_funcs: ['console.log'] // 删除console.log}}})]}
}

配置完上面代码,重启即可看到效果。注意:代码只会在production(生产环境)环境下有效,看上面我们的配置mode: production,就是生产环境。来讲解一下上面这俩个属性drop_consolepure_funcs的区别,前者则是删除所有带console的前缀的调试方法,如:console.logconsole.tableconsole.dir只要带有console前缀则全部删除。而后者则是配置,就是数组的值是什么它才会删除什么,比如pure_funcs:[console.log, console.dir]那么只会删除这两项,则不会删除代码中的console.table代码。

以上代码放到生产环境下,console调试代码即可清除,但是还有一个问题需要注意,就是该插件只支持ES5语法,如果你的代码中涉及到ES6语法则会报错。

terser-webpack-plugin

terser-webpack-plugin

该插件跟上面uglifyjs-webpack-plugin一样,都是用于减少我们代码js代码体积。

看上面描述:如果你的Webpack版本大于5+,则不需要安装此terser-webpack-plugin插件,会自带terser-webpack-plugin。但你的Webpack版本还是4,则你需要安装terser-webpack-plugin4的版本

安装

npm i terser-webpack-plugin@4

使用

const TerserWebpackPlugin = require("terser-webpack-plugin");module.exports = {// 省略...mode: "production",optimization: {minimizer: [new TerserWebpackPlugin({terserOptions: {compress: {warnings: true,drop_console: true,drop_debugger: true,pure_funcs: ['console.log', "console.table"] // 删除console}}});]}
}

该插件功能与上面一样,属性用法也一样,唯一该插件可支持ES6语法。都是在生产环境代码生效。

Vue-cli配置

这是在Vue-cli项目中推荐使用的清除console插件。更多介绍看这里 babel-plugin-transform-remove-console

安装

npm i babel-plugin-transform-remove-console --save-dev

使用

在项目根目录babel.config.js文件下配置。该插件不区分生产环境或者开发环境,只要你配置都能生效。

module.exports = {plugins: ["transform-remove-console"]
}// 生产环境如下配置const prodPlugins = []
if (process.env.NODE_ENV === 'production') {prodPlugins.push('transform-remove-console')
}
module.exports = {plugins: [...prodPlugins]
}

简单粗暴删除

接下来这个可是一个骚操作,瞪大眼睛看好了,哈哈哈。直接重写console.log的方法。

console.log = function () {};

灵活运用VScode编辑器

微信截图_20210805001715.png

使用

直接全局搜索本项目里console.log正则匹配,然后全部替换为空即可。

console\.log\(.*?\)

手写Loader删除console

我们来写一个简易版的清除console插件。

新建一个js文件,我这里名为clearConsole.js,其实这里也是用正则去匹配然后替换为空。如果不懂loader则可看我这篇文章手写一个Sass-loader。

clearConsole.js

const reg = /(console.log\()(.*)(\))/g;
module.exports = function(source) {source = source.replace(reg, "")return source;
}

Vue.config.js配置

module.exports = {// 省略...configureWebpack: {module: {rules: [{test: /\.vue$/,exclude: /node_modules/,loader: path.resolve(__dirname, "./clearConsole.js")},{test: /\.js$/,exclude: /node_modules/,loader: path.resolve(__dirname, "./clearConsole.js")}],}},
}

配置如上代码就可以啦~,清除js文件和vue文件里的console.logexclude代表不去node_module目录下查找。

❤️ 看完三件事

如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个小忙:

  • 点个【在看】,或者分享转发,让更多的人也能看到这篇内容

  • 关注公众号【趣谈前端】,定期分享 工程化 可视化 / 低代码 / 优秀开源

从零搭建全栈可视化大屏制作平台V6.Dooring

从零设计可视化大屏搭建引擎

Dooring可视化搭建平台数据源设计剖析

可视化搭建的一些思考和实践

基于Koa + React + TS从零开发全栈文档编辑器(进阶实战

点个在看你最好看

前端:一键清除项目中无用的console.log代码相关推荐

  1. 如何移除项目中无用的 console.log 代码

    大家好,我是若川.早些天时,我看到一个后端公众号发<辞退了一个前端>,当时还想着现在后端公众号都开始吊打前端了嘛.其中有个理由就是线上还一堆console.log...我猜很多人都会移除项 ...

  2. 一键清除Delphi中无用的文件

    delphi确实好用,但它生成的各种文件,有时对我们来说基本没用,随着我们做的项目越来越多,其中无用的文件有时能占到三分之一.今晚写了个小工具,可以递归清理 delphi文件夹下无用的文件. 代码如下 ...

  3. [css] 如何清除在项目中无用的css代码呢?

    [css] 如何清除在项目中无用的css代码呢? 1.IDE中,会对没有使用到的样式,自己进行检测,删除时候,还需要手动删除. 2.webpack中,有基于消除无用css的插件(purifycss-w ...

  4. 前端开发从项目中获得什么_我如何获得副项目的前10个客户以及从他们那里学到的东西...

    前端开发从项目中获得什么 by Tigran Hakobyan 由Tigran Hakobyan 我如何获得副项目的前10个客户以及从他们那里学到的东西 (How I got my first 10 ...

  5. 前端人真实项目中遇到的问题总结

    // 以下题目有简单也有难的(具体看你怎么定义). // 如果能做到立马想出答案的,则前端算是学的不错的了. // 如果需要百度才能做出来(直接百度答案的,我就只能说你开心就好),那么也说明一般. / ...

  6. Excel如何一键清除公式中的各种错误值?

    今天要和大家分享的是,Excel一键清除公式中的各种错误值的操作,比如说下图各种公式中的错误值已经标黄了,如何一键删除呢? (方方格子插件) 1.先看动图演示吧 2.首先选中数据区域的任意位置 3.然 ...

  7. vue 关闭log_vue或react项目生产环境去掉console.log的操作

    在开发环境写了很多console.log/info/debug,在生产环境需要去掉这些console. 如果手动删除未免也太累了,再说以后想再开发还得重新写console. 事实上webpack提供了 ...

  8. console react 去除_vue或react项目生产环境去掉console.log的操作

    在开发环境写了很多console.log/info/debug,在生产环境需要去掉这些console. 如果手动删除未免也太累了,再说以后想再开发还得重新写console. 事实上webpack提供了 ...

  9. Vue项目如何过滤全部console.log输出(浅水魚)

    Vue项目如何过滤全部console.log输出 在App.vue的created中调用一个consoleCancle方法 然后在methods中创建一个consoleCancle方法,让consol ...

最新文章

  1. git 创建分支,更改并提交
  2. Servlet实现的个人所得税计算器
  3. 数据库设计的第三范式
  4. boost::hash_range相关的测试程序
  5. java ssh客户端_简单的Java SSH客户端
  6. 关于CI框架引入CSS与JS文件
  7. 怎么看电脑电源多少w_UPS不间断电源设备哪个品牌好?如何选购家用电脑UPS电源?UPS电源价格多少?...
  8. mysql修改数据存放位置_Mysql 修改数据库存放位置
  9. python常用排序_python中的各种排序
  10. developerDiskImage文件提取
  11. sourcetree使用说明
  12. 问道linux一键端,问道手游源码打包一键端搭建_附教程
  13. 《有限单元法》--王勖成,习题2.12 MATLAB 程序
  14. python如何制作exe文件_Python制作exe文件简单流程
  15. Struts2通配符映射
  16. openrasp-iast 灰盒扫描工具
  17. python--craps赌博游戏
  18. IEEE 802.3av 10Gbits EPON 中文翻译(一)
  19. 大曝光!武汉最牛的互联网公司全在这了
  20. C/C++框架和第三方库汇总

热门文章

  1. javascript非JSON字符串转成对象
  2. 聚合数据鼎力相助 大数据惠及伙伴
  3. 大家谈中国:面对“双11网购第一脚”,阿里们不必窃喜
  4. 专题图制作(点密度图、分层设色图/等级图、单值图、柱状图、饼状图)
  5. 胶原蛋白的分类及总胶原蛋白检测试剂盒方案
  6. vivo系列某些机型的浏览器不支持Chrome调试
  7. MyBatis Insert操作(一)
  8. BeagleBoneBlack的U-Boot是如何引导系统的
  9. 提取lbp特征java代码_LBP特征提取实现
  10. 出现 尝试连接“EAI_NONAME未提供,或不知道节点名或服务名”失败 解决办法