关于webpack中的几种资源处理格式

代码绘云师
• 阅读 675

在Webpack 5中,提供了一个统一的资源处理机制,通过 asset 模块类型,能够轻松地处理各种资源,比如图片、字体、音视频等等。

其中,asset 模块类型提供了四种模式:

  1. asset/resource:将资源作为单独的文件输出到输出目录,并返回 public URL。
  2. asset/inline:将资源作为 data URI 内联到 bundle 中。
  3. asset/source:将资源作为源代码字符串导出,并返回其 URL。
  4. asset:根据资源文件大小自动选择 asset/resource 或 asset/inline。

下面分别介绍一下这四种模式的特点和使用方法:
1. asset/resource
asset/resource 模式会将资源作为单独的文件输出到输出目录,并返回该资源的 URL。它的使用方式是:

{
  test: /\.(png|jpg|gif)$/i,
  type: 'asset/resource',
}

2. asset/inline

asset/inline 模式会将资源作为 data URI 内联到 bundle 中。这种方式适用于小文件,比如图标。它的使用方式是:

{
  test: /\.(png|jpg|gif)$/i,
  type: 'asset/inline',
}
  1. asset/source

asset/source 模式会将资源作为源代码字符串导出,并返回该资源的 URL。这种方式适用于需要进一步处理资源的情况,比如对 SVG 图标进行优化。它的使用方式是:

{
  test: /\.(svg)$/i,
  type: 'asset/source',
}
  1. asset

asset 模式会根据资源文件的大小自动选择 asset/resource 或 asset/inline 模式。当资源文件的大小小于指定的阈值时,使用 asset/inline 模式,否则使用 asset/resource 模式。它的使用方式是:

{
  test: /\.(png|jpg|gif)$/i,
  type: 'asset',
  parser: {
    dataUrlCondition: {
      maxSize: 8 * 1024, // 小于8KB的图片会被转成base64编码
    },
  },
}

需要注意的是,当使用 asset 模式时,可以通过 parser 选项来配置资源的处理方式。上面的例子中,通过 dataUrlCondition 配置,将小于 8KB 的图片转成 base64 编码内联到 bundle 中,而大于 8KB 的图片则会被作为单独的文件输出到输出目录。

点赞
收藏
评论区
推荐文章
浩浩 浩浩
4年前
【Flutter实战】图片和Icon
3.5图片及ICON3.5.1图片Flutter中,我们可以通过Image组件来加载并显示图片,Image的数据源可以是asset、文件、内存以及网络。ImageProviderImageProvider是一个抽象类,主要定义了图片数据获取的接口load(),从不同的数据源获取图片需要实现不同的ImageProvi
Stella981 Stella981
4年前
Android WebView 的三种使用方式
关于原生开发好,还是混合模式开发好,还是套壳的方式好,在这里不是重点,没有最好的,只有相对适合的。重点是那种方式以最低的资源代价适合你的业务场景,适合你的团队,根据实际情况来做技术选型。1,使用h5替代android的viewxml前端将写好的h5页面放在android工程的asset目录,打包的时候会将h5页面一起打在apk里面,
Wesley13 Wesley13
4年前
Unity2D游戏开发基础教程1.2项目、资源和场景
Unity2D游戏开发基础教程1.2项目、资源和场景如果使用Unity制作游戏,就一定会接触到项目(Project、资源(Asset)和场景(Scene)。本节将依次介绍它们。1.2.1项目Unity是一个基于项目的应用。这就意味着每开发一个新游戏,都要创建一个新项目。一个项目就代表
Stella981 Stella981
4年前
Docker核心技术Namespace浅析
简介LinuxNamespace提供了一种内核级别隔离系统资源的方法,通过将系统的全局资源放在不同的Namespace中,来实现资源隔离的目的。不同Namespace的程序,可以享有一份独立的系统资源。目前Linux中提供了六类系统资源的隔离机制,分别是:Mount:隔离文件系统挂载点UTS:隔离主机
Stella981 Stella981
4年前
Cocos Creator 资源加载流程剖析【三】——Load部分
Load流程是整个资源加载管线的最后一棒,由Loader这个pipe负责(loader.js)。通过Download流程拿到内容之后,需要对内容做一些“加载”处理。使得这些内容可以在游戏中使用。这里并不是所有的资源都需要进行一个加载处理,目前只有图片、Json、Plist、Uuid(Prefab、场景)等资源才会执行加载的流程,其他的资源在Downloa
Wesley13 Wesley13
4年前
Unity ScriptObject创建Asset文件
创建ScriptObject可以创建带序列化的资源,只保存数据不用绑定在游戏对象上。创建出来的本子资源可以通过资源加载到游戏里使用。这里介绍一下使用Resources加载。创建好的asset文件也可以在Inspector中进行编辑。1usingSystem.Collections.Generic;2usingUnityEng
Wesley13 Wesley13
4年前
Unity2D游戏开发基础教程1.2 项目、资源和场景
Unity2D游戏开发基础教程1.2项目、资源和场景如果使用Unity制作游戏,就一定会接触到项目(Project、资源(Asset)和场景(Scene)。本节将依次介绍它们。1.2.1项目Unity是一个基于项目的应用。这就意味着每开发一个新游戏,都要创建一个新项目。一个项目就
Stella981 Stella981
4年前
Noark入门之异步事件
引入异步事件主要是为了各模块的解耦,每当完成一个动作时,向系统发布一个事件,由关心的模块自己监听处理,可选择同步处理,异步处理,延迟处理。何时发布事件,当其他模块关心此动作时<br比如获得道具时,任务系统模块要判定完成进度,BI模块需要上报等等都可以监听此事件,已达模块解耦0x00事件源一个实现xyz.noark.core.event
Wesley13 Wesley13
4年前
D3D资源管理
摘要受管贴图(Managedtextures,也就是我们通常所谓的“自动管理贴图”),在DX6中首次被引入,经过一系列的改进和增强,在DX9中自动管理的资源类型增加到贴图,顶点缓冲,顶点索引缓冲,所有这些资源使用统一的公共接口。通过使用D3D资源管理器,应用程序可以轻松的处理设备丢失、处理稍微过量的显存使用。有时开发者在使用受管资源
Stella981 Stella981
4年前
AVAssetExportSession 音视频的剪辑,以及格式的装换
//第一种方式//asset生成必须为文件的url,而且是本地AVAsset\mediaAsset\_player.currentItem.asset;//AVMutableComposition可以进行音视频的组合AVAssetExportSession\es\\AVAssetExportSessio
linbojue linbojue
1个月前
使用 ResourceLoader 统一管理你的本地资源
前言在项目开发中,我们经常需要读取各种本地资源文件:配置文件、模板文件、静态资源、数据文件等。Spring框架提供了一个强大而优雅的解决方案——ResourceLoader接口。本文将使用SpringResourceLoader统一管理本地资源,让你的代码