当前位置: 首页 > news >正文

vue打包上线利用插件去除 console

开发阶段,我们会编写大量的 console 语句用于测试

使用 build 命令打包时,会作为警告提出,因为上线之后,这些 console 语句是没有任何作用的,所以警告你应该移除

挨个文件手动删除的方法,会有两个问题

耗时耗力

代码中其实还是需要console的,只是打包后,希望生成的文件中不包含而已

解决的办法比较多

  1. babel-plugin-transform-remove-console
    比较流行的解决办法是使用 babel 的一个插件,因为webpack 打包时会使用 babel 进行代码降级,所以babel 插件可以在打包过程中,将 console 移除

npm 中搜索 babel-plugin-transform-remove-console,按照说明操作即可

1、安装

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

2、配置

在项目根目录下的 babel.config 文件中加入如下代码
请添加图片描述
再次运行 npm run build 命令,就不会有此类型的警告了

  1. terser-webpack-plugin
    安装
npm install terser-webpack-plugin --save-dev

项目根目录下新建 webpack.config.js,注册此插件

const TerserPlugin = require('terser-webpack-plugin')
module.exports = {
  optimization: {
    minimize: true,
    minimizer: [new TerserPlugin()],
    terserOptions: {
      compress: {
        drop_console: true
      }
    }
  }
}

重新编译打包就OK了

  1. 问题
    使用 babel-plugin-transform-remove-console 插件会有一个问题(使用terser-webpack-plugin没有此问题),就是一旦安装并配置好后,无论运行
npm run build

还是运行

npm run serve

都会删除 console,语句

因为我们开发阶段都是使用 serve 命令启动的,所以导致开发阶段我们所有的console 语句都消失了

解决办法就是明确告诉此插件当前是开发环境还是生产环境

修改 babel.config.js 中的代码

const prodPlugins = []
if (process.env.NODE_ENV === 'production') {
  prodPlugins.push('transform-remove-console')
}
 
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  plugins: [...prodPlugins]
}

此时,只有在生产环境下,才会去除 console

相关文章:

  • Spring bean的创建过程
  • [架构之路-148]-《软考-系统分析师》- 7-企业信息化战略与实施-5-企业信息系统、电子政务
  • 机器学习笔记之策略
  • 面向对象练习题(6)
  • 基于springboot实现时间管理系统演示【附项目源码+论文说明】
  • 【致敬嵌入式攻城狮第2期活动预热征文】——蜂鸣器(内化)
  • 第8章_索引的创建与设计原则
  • 了解PL/SQL看这一篇够够了~
  • 为什么我们认为GPT是一个技术爆炸
  • 低代码打翻前端的饭碗?探秘两者藕断丝连的关系
  • Redis面试题 (2023最新版)
  • 文件转换-cad转geojson
  • 文件操作编程
  • 开发脚手架常用的JS库
  • 设备树dtb文件的格式分析
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Android单元测试 - 几个重要问题
  • Angular 响应式表单 基础例子
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Java精华积累:初学者都应该搞懂的问题
  • JAVA之继承和多态
  • js ES6 求数组的交集,并集,还有差集
  • JS 面试题总结
  • LeetCode算法系列_0891_子序列宽度之和
  • React-生命周期杂记
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 实战|智能家居行业移动应用性能分析
  • 用 Swift 编写面向协议的视图
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​浅谈 Linux 中的 core dump 分析方法
  • #14vue3生成表单并跳转到外部地址的方式
  • #Z0458. 树的中心2
  • (2)Java 简介
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (分布式缓存)Redis分片集群
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (三) diretfbrc详解
  • (十一)c52学习之旅-动态数码管
  • (一)Linux+Windows下安装ffmpeg
  • (转载)深入super,看Python如何解决钻石继承难题
  • *** 2003
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 快速重构概要1
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .NET正则基础之——正则委托
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [Android]将私钥(.pk8)和公钥证书(.pem/.crt)合并成一个PKCS#12格式的密钥库文件
  • [bzoj 3534][Sdoi2014] 重建
  • [C++] 从零实现一个ping服务