webpack4-处理图片

62次阅读

共计 1102 个字符,预计需要花费 3 分钟才能阅读完成。

前言

1.webpack 在处理图片的时候,会涉及一下几个问题:

  • 图片的大小问题,比如是否压缩图片,限制图片大小
  • 图片引用方式的问题,是用 base64 的格式引用图片,还是用 url 路径引用图片
  • 图片路径问题,开发时写的图片路径和发布时的图片路径不同

2. 跟图片路径有关的文件主要有一下几类:

  • css 里的 background-image
  • html 里的 <img> 标签:模板文件里的 <img> 标签、主页面的 <img> 标签
  • js 里引入的 img

3. 常用依赖

  • file-loader:在 css 和 html 主页中,相对路径的图片都会被处理,发布到输出目录中
  • url-loader:可以替代 file-loader,并且给图片一个 limit 标准,当图片小于 limit 时,使用 base64 的格式引用图片;否则,使用 url 路径引用图片。
  • image-webpack-loader:压缩图片。这个用得不算太多,因为前期可以直接让 UI 设计把图片压缩好,像 ps 就可以自动的批量压缩图片。

file-loader 示例

一,安装依赖

npm i -D file-loader

二,file-loader 的配置,详情参考 https://www.webpackjs.com/loa…

{test: /\.(png|svg|jpg|gif)$/,
    use: {
        loader: 'file-loader',
        options: {name:'assets/[name].[ext]',
        }
    }
},

三,图片的引用

1. 主页

<img src="'../../assets/sm.jpg'"/>

2. 模板页,模板页里的 <img> 标签中相对路径的图片不会被 loader 解析,因此需要使用 require 引用图片

<img src="${require('../../assets/sm.jpg')}"/>

3.css

.layer{
  width: 86px;
  height: 59px;
  background-image:url("../../assets/sm.jpg");
}

四,运行 webpack –mode production,图片被输出到指定目录

url-loader 示例

一,安装依赖

npm i -D url-loader

二,url-loader 的配置

{test: /\.(png|svg|jpg|gif)$/,
    use: {
        loader: 'url-loader',
        options: {name:'assets/[name].[ext]',
            limit:2048
        }
    }
},

三,图片小于 limit 时,会直接把图片的数据流,即 base64 格式,写入到 <img> 标签或 css 中,如

参考网址:https://www.webpackjs.com/loa…

正文完
 0