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

webpack5减少构建文件体积(五)

一、减少代码体积:Tree Shaking

Tree Shaking 是一个术语,通常用于描述移除 JavaScript 中的没有使用上的代码。
注意:它依赖 ES Module。

如何设置
Webpack5已经默认开启了这个功能,无需其他配置。

二、减少代码体积:Babel

Babel 对一些公共方法使用了非常小的辅助代码,比如 _extend。默认情况下会被添加到每一个需要它的文件中。
你可以将这些辅助代码作为一个独立模块,来避免重复引入。

@babel/plugin-transform-runtime: 禁用了 Babel 自动对每个文件的 runtime 注入,而是引入 @babel/plugin-transform-runtime 并且使所有辅助代码从这里引用。

如何设置

1、下载包

npm i @babel/plugin-transform-runtime -D

2、配置
将plugins: ["@babel/plugin-transform-runtime"], // 减少代码体积 这段加入到babel-loader的属性中。如下所示:

{
       loader: "babel-loader",
       options: {
            cacheDirectory: true, // 开启babel编译缓存
            cacheCompression: false, // 缓存文件不要压缩
            plugins: ["@babel/plugin-transform-runtime"], // 减少代码体积
        },
}

生产环境与开发环境配置的方法是一样的方式。

三、减少图片压缩体积:Image Minimizer

开发如果项目中引用了较多图片,那么图片体积会比较大,将来请求速度比较慢。
我们可以对图片进行压缩,减少图片体积。
注意:如果项目中图片都是在线链接,那么就不需要了。本地项目静态图片才需要进行压缩。

如何设置

1、下载包

npm i image-minimizer-webpack-plugin imagemin -D

还有剩下包需要下载,有两种模式:

无损压缩

npm install imagemin-gifsicle imagemin-jpegtran imagemin-optipng imagemin-svgo -D

有损压缩

npm install imagemin-gifsicle imagemin-mozjpeg imagemin-pngquant imagemin-svgo -D

2、配置
我们以无损压缩配置为例:
(1)首先引入插件:

const ImageMinimizerPlugin = require("image-minimizer-webpack-plugin");

(2)引入插件内容

 // 压缩图片
      new ImageMinimizerPlugin({
        minimizer: {
          implementation: ImageMinimizerPlugin.imageminGenerate,
          options: {
            plugins: [
              ["gifsicle", { interlaced: true }],
              ["jpegtran", { progressive: true }],
              ["optipng", { optimizationLevel: 5 }],
              [
                "svgo",
                {
                  plugins: [
                    "preset-default",
                    "prefixIds",
                    {
                      name: "sortAttrs",
                      params: {
                        xmlnsOrder: "alphabetical",
                      },
                    },
                  ],
                },
              ],
            ],
          },
        },
      }),

3、打包时会出现报错

我们需要安装两个文件到 node_modules 中才能解决

  • jpegtran.exe

需要复制到 node_modules\jpegtran-bin\vendor 下面

jpegtran 官网地址

  • optipng.exe

需要复制到 node_modules\optipng-bin\vendor 下面

OptiPNG 官网地址


http://www.kler.cn/a/415420.html

相关文章:

  • Flutter 版本管理工具FVM
  • 剪映自动批量替换视频、图片素材教程,视频批量复刻、混剪裂变等功能介绍
  • 怎么样才算得上熟悉高并发编程?
  • MySQL5.6升级MySQL5.7
  • Python基础学习-12匿名函数lambda和map、filter
  • 【Code First】.NET开源 ORM 框架 SqlSugar 系列
  • CSS新特性(11)
  • ⭐ Unity 资源管理解决方案:Addressable_ Demo演示
  • 从ChatGPT到代理AI:安全领域的新变革
  • Vue CLI 提供了哪些功能
  • 【Ubuntu】安装 Anaconda
  • 注册表修改键盘位置
  • 专业130+总分400+西南交通大学824信号与系统考研经验西南交大电子信息与通信工程,真题,大纲,参考书。
  • 小程序 - 个人简历
  • 添加字符(暴力模拟)
  • Opencv+ROS自编相机驱动
  • VUE前端实现天爱滑块验证码--详细教程
  • 理解Parquet文件和Arrow格式:从Hugging Face数据集的角度出发
  • 挑战用React封装100个组件【001】
  • 设计模式面试大全:说一下单例模式,及其应用场景?
  • Microsoft Fabric - 尝试一下Delta Table
  • 【VUE3】npm : 无法加载文件 D:\Program\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。
  • 设计模式之抽象工厂 C# 范例
  • 力扣637. 二叉树的层平均值
  • 公开整理-中国省级人工智能专利统计数据(2010-2022年)
  • Android Studio安装TalkX AI编程助手