webpack图片压缩_webpack图片打包加速

webpack图片压缩_webpack图片打包加速图片处理url-loader(webpack5之前的处理方式)在项目开发中,我们时长会需要使用到图片,比如在img文件夹中有图片test1.png,然后在normal.css中会引用到图片body

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

图片处理url-loader(webpack5之前的处理方式)

在项目开发中,我们时长会需要使用到图片,比如在img文件夹中有图片test1.png,然后在normal.css中会引用到图片

body{
    background: url("../img/test1.png");
}

但是此时,我们直接使用webpack打包是会报错的,我们需要安装url-loader,它是用于将文件转换为 base64 URI 的 loader。

安装命令如下:

npm install url-loader --save-dev

url-loader 功能类似于 file-loader, 但是在文件大小(单位为字节)低于指定的限制时,可以返回一个 DataURL。

接着我们在webpack.config.js中配置url-loader的设置

module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpg|gif|jpeg)$/i,
        use: [
          {
            loader: 'url-loader',
            options: {
              limit: 8192,
            },
          },
        ],
      },
    ],
  },
};

此时,如果我们的图片test1.png的大小小于8192k,那么就可以打包成功,但是如果我们的图片大于8192k,此时就需要安装file-loader

安装命令如下:

npm install file-loader --save-dev

然后,在 webpack.config.js 配置中添加 loader。例如:

module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpe?g|gif)$/i,
        use: [
          {
            loader: 'file-loader',
            options: {
              publicPath: "dist/"
            }
          },
        ],
      },
    ],
  },
};

注意:配置时如果你同时配置了url-loader,一定要把url-loader的配置注释掉
此时如果我们进行打包,打包出来的图片名字是随机的哈希值字符串,例如1b959a13f661bd214696460400b8c8d0.png,如果我们想自定义名字,则需要进行配置option选项,具体参数可以参考官网
 

资源模块

webpack5之前我们处理静态资源比如。图片字体之类的资源的时候等,需要用到url-loader,file-loader,raw-loader,webpack5则放弃了这三个loader,这三个loader在github上也停止了更新。

webpack5使用四种新增的资源模块(Asset Modules)替代了这些loader的功能。

  • asset/resource 将资源分割为单独的文件,并导出url,就是之前的 file-loader的功能.
  • asset/inline 将资源导出为dataURL(url(data:))的形式,之前的 url-loader的功能.
  • asset/source 将资源导出为源码(source code). 之前的 raw-loader 功能.
  • asset 自动选择导出为单独文件或者 dataURL形式(默认为8KB). 之前有url-loader设置asset size limit 限制实现。
     

案例

我们这里以assert/inline为例子,进行配置

const path = require('path')

module.exports = {
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
  },
  module: {
    rules: [
      {
        test: /\.png/,
        type: 'asset/inline'
      },
    ],
  },
}

此时,再进行打包,png格式的图片都会被作为 data URI 注入到 bundle 中。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166091.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LLDP协议[通俗易懂]

    LLDP协议[通俗易懂]一、LLDP协议概述随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加自己特有的功能,这就导致在一个网络中往往会有很多具有不同特性的、来自不同厂商的设备,为了方便对这样的网络进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息。LLDP(LinkLayerDiscoveryProtocol,链路层发现协议)就是用于这个目的的协议。LLDP定义在802.1ab中,它是一个二层协议,它提供了一种标准的链路层发现方式。LLDP

    2022年5月5日
  • Oracle技术之临时表的undo生成

    Oracle技术之临时表的undo生成

    2021年8月24日
  • 决策树模型参数释义「建议收藏」

    决策树模型参数释义「建议收藏」转自https://blog.csdn.net/qq_16000815/article/details/80954039”’scikit-learn中有两类决策树,它们均采用优化的CART决策树算法。”’fromsklearn.treeimportDecisionTreeRegressor”’回归决策树”’DecisionTreeRegressor(criterio…

    2022年10月8日
  • comparable java_java rectangle

    comparable java_java rectangle在JAVA中使用eXtremeDBautoid,主要有以下几个问题:定义插入数据已经获取记录,如何获得autoid知道autoid,如何获取记录定义autoid在类的定义前加入注释:@Persistent(autoid=true)注意,eXtremeDB中的autoid并不需要单独的定义出一列表示,只需要在类级别定义即可。插入数据正常的使用insert方法插入即可,无需关注autoid。如果需要…

    2022年10月14日
  • app hybrid框架_混合式app

    app hybrid框架_混合式app几种APP开发模式概述当前的APP开发模式注意有以下四大类型:NativeApp 即传统的原生APP开发模式,Android基于Java语言,底层调用Google的API;iOS基于OC或者Swift语言,底层调用App官方提供的API。体验最后。 WebApp 即移动端的网站,将页面部署在服务器上,然后用户使用各大浏览器访问。一般泛指SPA(SinglePa…

    2022年9月2日
  • freeswitch之呼叫中心acd模块开发

    freeswitch之呼叫中心acd模块开发一、定义:ACD(AutomaticCallDistributor)自动呼叫分配,也叫智能选择座席。它是呼叫中心整个前台接入系统逻辑功能的描述:把接入的呼叫转接到正确的座席员桌前。ACD是现代呼叫中心有别于一般的热线电话系统和自动应答系统的重要标志,其性能的优劣直接影响到呼叫中心的效率和顾客的满意度。二、ACD包含的功能点:1、程控交换功能ACD在本质上也是交换机的一种类型,必须具有程控交换最基本的话务交换功能。2、排队功能ACD必须具有话务排队的功能,所谓排队是指在内线都

    2022年7月14日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号