webpack4系列教程,如何处理css/js文件中的图片?
发布于 作者:苏南大叔 来源:程序如此灵动~

在css
文件中,一般来说,是会需要一些图片来丰富其表现能力的。那么,webpack
处理完css
文件后,图片都是怎么处理的呢?如何保证其相对路径关系呢?这就是苏南大叔在本文中,将要给大家讲述的内容。

本文的内容,和webpack
如何处理css
文件还是有紧密关系的。建议您查看相关内容,链接见文末。新出现的loader
角色是url-loader
,本文中将要使用url-loader
来处理css
中的图片。本文测试环境:win10
、node@14.2.0
、npm@6.14.4
、webpack@4.43.0
、mini-css-extract-plugin@0.9.0
、css-loader@3.5.3
、url-loader@4.1.0
。
安装并配置url-loader
在这里,苏南大叔默认您已经配置好了css
相关的处理插件,接下来,我们来处理一下css
中的图片文件。使用的loader
叫做url-loader
。当然,这里的图片,不但可以处理css
中的图片,还可以处理js
中import
的图片。
安装命令如下:
webpack.config.js
配置如下:

配置文件,图片base64
大家主要关注test:/\.(png|jpg|gif|jpeg|svg)$/
附近这一段就可以了。这里有个options.limit
的项目,控制的是图片的最终组成形态。如果图片小于等于这个阈值,就会表现为base64
的一串代码,如果图片大于这个阈值,就会表现为独立文件。也就是说,css
小图片通过这个设置,变成内嵌到css
中的字符串,从而减少请求的连接数。
范例中的options.limit
,赋值1024
的意思就是1kb
,就是小于等于1kb
的图片,会被base64
。

配置文件,文件路径
在webpack
中,处理这些路径的时候,一直都是谜一般的存在。那么,处理这些图片的路径的时候,又是怎么组成的呢?当然还是需要查看url-loader
这个loader
。

在mini-css-extract-plugin
的options
里面,有个publicPath
;在url-loader
的options
里面,也有个publicPath
,同时还存在name
、outputPath
。
图片文件的最终输出路径是由下面(伪代码)所组成的:
而在css
文件的代码中,引用路径的组成,是由下面几项(伪代码)所组成的:
可以推断,两者publicPath
是不同的哦,url-loader["publicPath"]
是包含有url-loader["outputPath"]
的路径定义的。如果两个publicPath
都配置了的话,据实验结果,是以url-loader["publicPath"]
为准。
如果url-loader
没有定义publicPath
的话,就会读取到mini-css-extract-plugin
的publicPath
。组成如下:
苏南大叔,个人推荐:使用url-loader["publicPath"]
,不推荐使用设置output["publicPath"]
。
引入图片的方式
css
中引入的图片:test.css
:
main.js
:
js
中引入的图片:main.js
:

可以处理上述两种img
图片处理方式,但是不支持处理下面的图片引入方式:
相关链接
总结
值得再次强调的是:本文中处理的是css
/js
中引用的图片,而在webpack
项目里面,css
是由js
引入的。本文处理的对象不包括html
中的图片!但是,如果html
使用<%require%>
类似语句,进行的图片加载的话,是符合本文中的相关设定的。
更多webpack
相关使用教程,请参考苏南大叔的博客:


