webpack之资源模块

简介: webpack之资源模块

资源模块(asset module)是一种模块类型,它允许使用资源文件(字体,图标等)而无需配置额外 loader。


该部分是用来解决webpack4+的图片,字体等资源的处理。


在 webpack 5 之前,通常使用:



  • url-loader 将文件作为 data URI 内联到 bundle 中



资源模块类型(asset module type),通过添加 4 种新的模块类型,来替换所有这些 loader:


  • asset/resource 发送一个单独的文件并导出 URL。之前通过使用 file-loader 实现。以前使用他来处理打包其他资源的loader。


  • asset/inline 导出一个资源的 data URI。之前通过使用 url-loader 实现。以前使用他来打包样式中图片的loader。


  • asset/source 导出资源的源代码。之前通过使用 raw-loader 实现。


  • asset 在导出一个 data URI 和发送一个单独的文件之间自动选择。之前通过使用 url-loader,并且配置资源体积限制实现。


配置资源模块的输出文件名和路径


仅适用于 assetasset/resource 模块类型。通过output属性


output: {
   assetModuleFilename: 'fonts/[name][ext]'
  }


通过loader中的generator属性


{
    test: /\.(eot|svg|ttf|woff|)$/,
    type: "asset/resource",
    generator: {
      // 输出文件位置以及文件名
      filename: "fonts/[name][ext]"
    },
  },


下面就介绍一下webpack5替代webpack4的打包方案


打包样式或者js中的引入的图片


{
    //处理图片资源
    test: /\.(jpg|png|gif|)$/,
    type: "asset",
    generator: {
      // 输出文件位置以及文件名
      filename: "images/[name][ext]"
    },
    parser: {
      dataUrlCondition: {
        maxSize: 10 * 1024 //超过10kb不转base64,然后就不会被打包
      }
    }
  },


打包其他资源


{
    exclude: /\.(css|js|html|sass|json|png|gif|jpg|jpeg)$/,
    type: "asset/resource",
    generator: {
      // 输出文件位置以及文件名
      filename: "others/[name][ext]"
    },
},


html中引入的图片资源依旧通过html-loader来打包


{
    test: /\.html$/,
    loader: 'html-loader'
  },


相关文章
|
5天前
|
前端开发 UED
Webpack 中处理 CSS 和图片资源的多 Loader 配置
【10月更文挑战第12天】 处理 CSS 和图片资源是 Webpack 配置中的重要部分。通过合理选择和配置多个 Loader,可以实现对这些资源的精细处理和优化,提升项目的性能和用户体验。在实际应用中,需要不断探索和实践,根据项目的具体情况进行灵活调整和优化,以达到最佳的处理效果。通过对 Webpack 中多 Loader 处理 CSS 和图片资源的深入了解和掌握,你将能够更好地应对各种复杂的资源处理需求,为项目的成功构建和运行提供坚实的基础。
18 1
|
6天前
|
缓存 前端开发 JavaScript
深入了解Webpack:模块打包的革命
【10月更文挑战第11天】深入了解Webpack:模块打包的革命
|
4天前
|
缓存 前端开发 JavaScript
Webpack技术深度解析:模块打包与性能优化
【10月更文挑战第13天】Webpack技术深度解析:模块打包与性能优化
|
5月前
|
存储 API
使用Webpack的module.hot API来定义模块的热替换
使用Webpack的`module.hot` API实现模块热替换,简单示例展示如何在`myModule`变化时执行回调。`module.hot.accept`接收模块路径和回调函数,当模块或其依赖变更时触发回调,用于执行更新逻辑。可通过`module.hot.data`保存和恢复状态以实现热替换时保持应用程序的状态。
|
1月前
|
前端开发
umi webpack配置图片资源转base64
umi webpack配置图片资源转base64
|
1月前
|
前端开发 开发者
在前端开发中,webpack 作为一个强大的模块打包工具,为我们提供了丰富的功能和扩展性
【9月更文挑战第1天】在前端开发中,Webpack 作为强大的模块打包工具,提供了丰富的功能和扩展性。本文重点介绍 DefinePlugin 插件,详细探讨其原理、功能及实际应用。DefinePlugin 可在编译过程中动态定义全局变量,适用于环境变量配置、动态加载资源、接口地址配置等场景,有助于提升代码质量和开发效率。通过具体配置示例和注意事项,帮助开发者更好地利用此插件优化项目。
75 13
|
2月前
|
缓存 前端开发 JavaScript
Webpack 模块解析:打包原理、构造形式、扣代码补参数和全局导出
Webpack 模块解析:打包原理、构造形式、扣代码补参数和全局导出
75 1
|
2月前
|
前端开发 开发者
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。本文阐述 DefinePlugin 的原理、用法及案例,包括安装配置、具体示例(如动态加载资源、配置接口地址)和注意事项,帮助开发者更好地利用此插件优化项目。
71 0
|
4月前
|
前端开发 JavaScript 架构师
Webpack模块联邦:微前端架构的新选择
Webpack的模块联邦是Webpack 5引入的革命性特性,革新了微前端架构。它允许独立的Web应用在运行时动态共享代码,无需传统打包过程。基本概念包括容器应用(负责加载协调)和远程应用(独立应用,可暴露模块)。实现步骤涉及容器和远程应用的`ModuleFederationPlugin`配置,以及在应用间导入和使用远程模块。模块联邦的优势在于独立开发、按需加载、版本管理和易于维护。通过实战案例展示了如何构建微前端应用,包括创建容器和远程应用,以及消费远程组件。高级用法涉及动态加载、路由集成、状态管理和错误处理。
88 3
|
4月前
|
缓存 前端开发 JavaScript
Webpack作为模块打包器,为前端项目提供了高度灵活和可配置的构建流程
【6月更文挑战第12天】本文探讨了优化TypeScript与Webpack构建性能的策略。理解Webpack的解析、构建和生成阶段是关键。优化包括:调整tsconfig.json(如关闭不必要的类型检查)和webpack.config.js选项,启用Webpack缓存,实现增量构建,代码拆分和懒加载。这些方法能提升构建速度,提高开发效率。
58 3