码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • webpack配置自动压缩图片


    手动压缩图片

    图片压缩是很重要的前端优化,一般可以选择手动压缩
    手动压缩网站

    webpack压缩图片

    这里记录借助webpack的image-webpack-loader实现自动压缩图片

    项目是create-react-app搭建的,webpack@5.64.4

    1、安装相应loader

    npm i image-webpack-loader --save-dev

    2、webpack相关配置

    webpack@5.x

    	const imageInlineSizeLimit = parseInt(
    	  process.env.IMAGE_INLINE_SIZE_LIMIT || '10000'
    	);
    
    • 1
    • 2
    • 3
     {
                  test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
                  type: 'asset',
                  parser: {
                    dataUrlCondition: {
                      maxSize: imageInlineSizeLimit,
                    },
                  },
                  use: [
                    {
                      loader: 'image-webpack-loader',
                      options: {
                        mozjpeg: {
                          progressive: true,
                          quality: 50
                        },
                        optipng: {
                          enabled: false,
                        },
                        pngquant: {
                          quality: [0.5, 0.65],
                          speed: 4
                        },
                        gifsicle: {
                          interlaced: false,
                        },
                        //ios不支持
                        // webp: {
                        //  quality: 100
                        // }
                      }
                    }
                  ],
                },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    Webpack5 已经将file-loader和url-loader两个 Loader 功能内置到 Webpack 里了,所以只需要配置 type: "asset"即可处理图片资源

    webpack@4.x
    webpack4 需要配置file-loader

    
      {
            test: /\.(gif|png|jpe?g|svg)$/i,
            use: [
              {
                loader: "file-loader",
                options: {
                  name: "[name].[hash:7].[ext]",
                  outputPath: "img",
                },
              },
              {
                loader: "image-webpack-loader",
                options: {
                  mozjpeg: {
                    progressive: true, 
                    quality: 60, // JPG 输出的质量 一般60为可接受的
                  },
                  optipng: {
                    enabled: true,
                  },
                  pngquant: {
                    quality: [0.5, 0.65], // PNG 质量范围
                    speed: 4,
                  },
                  gifsicle: {
                    interlaced: false,// 优化GIF
                  },
                  webp: {
                    quality: 75, // 转换为 webp
                  },
                },
              },
            ],
          },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    实践踩坑

    我的项目是webpack@5.x,node@14.19.1,npm安装image-webpack-loader后一直报错
    解决方法:切换node版本node@16.14.2,删除image-webpack-loader后重新安装

    效果

    使用前 0.99 MB
    使用后 205 KB

  • 相关阅读:
    使用.Net6中的System.Text.Json遇到几个常见问题及解决方案
    线程的生命周期和触发的机制
    代码重构不是笑谈
    [面试直通版]设计模式-2-
    mysql如果存在一行数据,主库和从库主键相同而其他列值不同,源端Update或者delete该行,从库会update和delete这一行吗
    Python将已标注的两张图片进行上下拼接并修改、合并其对应的Labelme标注文件
    【Python】深度讲解序列和字典,复习必备-太细啦
    共n级台阶,每次可以上1级或2级台阶,有多少种上法?
    LeetCode //C - 117. Populating Next Right Pointers in Each Node II
    网络安全—0基础入门学习手册
  • 原文地址:https://blog.csdn.net/qq_43223007/article/details/134531258
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号