在 webpack5
以前加载资源文件通常会是用 file-loader
、url-loader
、raw-loader
等,可是在webpack5
以后能够直接使用资源模块类型(asset module type
)来替代上述 loader
,本会会先将 webpack5
以前的加载方式,以及webpack5
以后新加入的加载方式webpack
56KB
的一张图和 11KB
的一张图,两张图分别加入到项目中,而后将两张图片显示带页面上以后打包看输出结果loader
去加载此类文件file-loader
的做用就是帮助咱们处理import/require()
方式引入的文件资源而且会将它放到咱们输出的文件夹中,上文中有提到引入图片资源以后会报错因此此时咱们在引入file-loader
以后而后再配置完成在打包看结果
yarn add file-loader -D
webpack
中添加一个 rule
就行 build
文件夹中多了两个文件,这两个文件就是使用的两个图片,而后再运行发现图片可以正常加载MD4
的散列函数处理生成的一个hash
值),部分公司会要求打包以后的文件名的格式好比须要保留原来的文件名、加上公司前缀、保留扩展名等,这个时候就能够使用 PlaceHolders
来完成,关于 PlaceHolders
官方文档上有详细的解释: PlaceHolders
ext
:处理文件扩展名name
:处理文件名称hash
:使用MD4
的散列函数处理生成的一个hash
值(默认状况下,它是哈希的十六进制摘要)contentHash
:指定生成文件内容哈希值的哈希方法。(默认 md4)path
:相对于 webpack/config context
的资源路径。hash:<length>
:截图hash的长度,默认32个字符url-loader
用法和做用基本上和file-loader
是相同的,可是url-loader
能够将文件转成成base64
的URI
。
yarn add url-loader -D
file-loader
替换成url-loader
能正常打包而且可否正常显示,可是 build
文件夹中并无对应的资源文件,是应为url-loader
默认会将图片资源转成 base64
编码格式以下图: url-loader
的limit
上文提到url-loader
会将图片资源默认都转成base64
编码格式,这样作有弊端,若是图片特别多的时候或者是图片资源很大的时候整个页面的加载速度就会很慢,因此此时就能够使用 limit
来作限制,就是图片资源大于多少的时候就不进行base64
编码格式的转换,具体配置以下图: limit
大图再也不被转换asset/resource
发送一个单独的文件并导出 URL。以前经过使用 file-loader
实现。asset/inline
导出一个资源的 data URI。以前经过使用 url-loader
实现。asset/source
导出资源的源代码。以前经过使用 raw-loader
实现。asset
在导出一个 data URI 和发送一个单独的文件之间自动选择。以前经过使用 url-loader
,而且配置资源体积限制实现。rule
loader
差不太多以下图指定文件名称和对应的路径 output.assetModuleFilename
来修改如图 filename
会优先使用 filename
的配置asset
而后在设置 parser.dataUrlCondition.maxSize
参数以下图: