IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue-cli中terser-webpack-plugin应用实战 -> 正文阅读

[JavaScript知识库]vue-cli中terser-webpack-plugin应用实战

说在前面

先来说一下这个插件的作用,引用官网的一句话,该插件使用 [terser](https://github.com/terser/terser) 来压缩 JavaScript。

我们项目主要用来去除生产环境中的console以及debugger等信息。

餐前小菜

值得注意的是,vue-cli在开发环境中TerserWebpackPlugin是不会生效的,所以在引入该插件时,即使我们希望只在生产环境中生效,不需要判断当前的环境。

在这里插入图片描述

应用初尝试

vue-cli对于TerserWebpackPlugin是有封装的,所以直接按照官网介绍的方式引入是有问题的,当然,问题不是说说而已,下面给大家对比一下不同的引入方式对于打包产生的损耗。

// vue.config.js
const TerserPlugin = require('terser-webpack-plugin')
... // other code
configureWebpack: {
    optimization: {
      minimizer: [
        new TerserPlugin({
          parallel: 4,
          terserOptions: {
            compress: {
              warnings: true,
              drop_debugger: true, // 删除debugger
              drop_console: true  // 删除console
            }
          }
        })
      ],
    }
}

此时运行npm run build命令,可以发现打包时间是:

在这里插入图片描述

究其原因,大家此时可以执行一下vue inspect > output.js命令,查看一下打包的配置文件,搜索关键字minimizer,可以发现他有两个options,我们有理由相信,这种情况下去打包,这两个插件会分别处理一遍我们的工程,为什么?

本身vue-cli会帮我们引入TerserWebpackPlugin,特定的webpack版本也会自动引入该插件,在vue.config.js中引入的TerserPlugin经过定位就是webpack引入的,所以在webpack配置中,一共new()了两次,自然也就会处理两次。

优化尝试

下面我们尝试去覆盖已有的配置,添加删除console以及debugger的代码:

// vue.config.js
chainWebpack (config) {
    config.optimization.minimizer('terser').tap((args) => {
      args[0].parallel = 4
      args[0].terserOptions = {
          compress: {
              warnings: true,
              drop_console: true,
              drop_debugger: true
          }
      }
      return args
    })
}

此时去查看打包配置的文件,搜索minimizer,可以发现就只有一个options了,说明我们已经成功完成了合并,但是上面的写法好像把terserOptions属性完全覆盖了,我们看一下当前的打包时间:

在这里插入图片描述

不错,快了40秒左右的时间。

最佳体验

其实vue-cli给出的配置,肯定是经过优化调整的,所以不是特殊情况,就不要覆盖原有配置了,所以改成下面这种写法:

// vue.config.js
chainWebpack (config) {
    config.optimization.minimizer('terser').tap((args) => {
      args[0].parallel = 4
      args[0].terserOptions.compress.warnings = true
      args[0].terserOptions.compress.drop_debugger = true
      args[0].terserOptions.compress.drop_console = true
      return args
    })
}

现在来看看打包的时间:

在这里插入图片描述

速度又增加了40秒左右。

说到最后

以上。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:11:47  更:2022-02-24 15:14:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:57:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码