第五章 webpack5处理其他资源

简介: 介绍如何处理字体、图标、音频等资源

开发过程中可能还会处理什么字体、图标、音频等资源,这里我们记录一下。

1. 处理HTML资源

这里的HTML其实只要处理一个index.html就行了,需要使用插件功能来自动引入打包后的资源到index.html中,如:在 body 中使用 script 标签引入你所有 webpack 生成的 bundle。

  • 安装所需插件
npm i html-webpack-plugin -D
  • 在webpack配置中启用插件

文件名:webpack.config.js

const path = require("path");
const ESLintWebpackPlugin = require("eslint-webpack-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
//...
 plugins: [
    new ESLintWebpackPlugin({
      // 指定检查文件的根目录
      context: path.resolve(__dirname, "src"),
    }),
    new HtmlWebpackPlugin({
      // 以 public/index.html 为模板创建文件
      // 新的html文件有两个特点:1. 内容和源文件一致 2. 自动引入打包生成的js等资源
      template: path.resolve(__dirname, "public/index.html"),
    }),
  ],
};

这个index.html的文件路径可以自定义,不过作为公共模板文件,我们一般放在public目录下面。

  • 运行webpack
npx webpack

此时 dist 目录就会输出一个 index.html 文件

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>webpack App</title>
  </head>
  <body>
    <script src="index_bundle.js"></script>
  </body>
</html>

可以看见该文件自动引入了webpack打包后的js文件。

如果在 webpack 的输出中有任何 CSS 资源(例如,使用 MiniCssExtractPlugin 提取的 CSS),那么这些资源也会在 HTML 文件 <head> 元素中的 <link> 标签内引入。


2.处理字体图标资源

  • 下载字体图标文件
  1. 打开阿里巴巴矢量图标库
  2. 选择想要的图标添加到购物车,统一下载到本地解压。
  • 将文件引入项目中
src/fonts/iconfont.ttf

src/fonts/iconfont.woff

src/fonts/iconfont.woff2

src/css/iconfont.css // (注意字体文件路径需要修改)

以上是文件存放在项目的目录路径。

  • 引入样式在入口文件

文件名:main.js

// 引入资源,Webpack才会对其打包
import "./css/iconfont.css";
// ...
  • 在HTML文件中测试图标

文件名:public/index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>webpack5</title>
  </head>
  <body>
    <h1>Hello Webpack5</h1>
    <!-- 使用字体图标 -->
    <i class="iconfont icon-arrow-down"></i>
    <i class="iconfont icon-ashbin"></i>
    <i class="iconfont icon-browse"></i>
    <script src="../dist/static/js/main.js"></script>
  </body>
</html>
  • 在webpack配置中处理字体图标文件

文件名:webpack.config.js

module.exports = {
    // ...
  module: {
    rules: [
        // ...
      {
        test: /\.(ttf|woff2?)$/,
        type: "asset/resource",
        generator: {
          filename: "static/media/[hash:8][ext][query]",
        },
      },
    ],
  },
  plugins: [],
  mode: "development",
};

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

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

type: "asset/resource"type: "asset"的区别

  1. type: "asset/resource" 相当于file-loader, 将文件转化成 Webpack 能识别的资源,其他不做处理
  2. type: "asset" 相当于url-loader, 将文件转化成 Webpack 能识别的资源,同时小于某个大小的资源会处理成 data URI 形式

  • 运行webpack
npx webpack

打开 index.html 页面查看效果


3. 如果需要处理音频或其他文件类型

就是在处理字体图标资源基础上增加其他文件类型,统一处理即可

文件名:webpack.config.js

{
    test: /\.(ttf|woff2?|map4|map3|avi)$/,
    type: "asset/resource",
    generator: {
        filename: "static/media/[hash:8][ext][query]",
    },
},

可以添加一些测试文件进行测试。

相关文章
|
JavaScript 前端开发
webpack基本配置,asset资源
webpack基本配置,asset资源
|
4月前
|
前端开发 UED
Webpack 中处理 CSS 和图片资源的多 Loader 配置
【10月更文挑战第12天】 处理 CSS 和图片资源是 Webpack 配置中的重要部分。通过合理选择和配置多个 Loader,可以实现对这些资源的精细处理和优化,提升项目的性能和用户体验。在实际应用中,需要不断探索和实践,根据项目的具体情况进行灵活调整和优化,以达到最佳的处理效果。通过对 Webpack 中多 Loader 处理 CSS 和图片资源的深入了解和掌握,你将能够更好地应对各种复杂的资源处理需求,为项目的成功构建和运行提供坚实的基础。
125 1
|
5月前
|
前端开发
umi webpack配置图片资源转base64
umi webpack配置图片资源转base64
|
9月前
|
JSON JavaScript 前端开发
对webpack的理解——打包样式资源
对webpack的理解——打包样式资源
72 0
|
前端开发 JavaScript
Vue--webpack打包css、image资源
Vue--webpack打包css、image资源
|
JavaScript
webpack原理篇(六十五):实战开发一个压缩构建资源为zip包的插件
webpack原理篇(六十五):实战开发一个压缩构建资源为zip包的插件
260 0
webpack原理篇(六十五):实战开发一个压缩构建资源为zip包的插件
|
前端开发 JavaScript CDN
webpack优化篇(四十五):进一步分包:预编译资源模块
webpack优化篇(四十五):进一步分包:预编译资源模块
232 0
webpack优化篇(四十五):进一步分包:预编译资源模块
webpack优化篇(四十三):多进程/多实例构建:资源并行解析可选方案
webpack优化篇(四十三):多进程/多实例构建:资源并行解析可选方案
169 0
webpack优化篇(四十三):多进程/多实例构建:资源并行解析可选方案
|
XML 缓存 JSON
webpack(一)——资源模块,loader,代码分离,缓存
安装webpack 安装webpack需要两个主包,在Vscode上新建一个文件夹,在终端打开, 输入node -v检测是否安装了nodejs 输入npm -v 输入npm install webpack webpack-cli --global安装webpack,会产生一个文件package.json 输入命令webpack -v是否安装成功
146 0
webpack(一)——资源模块,loader,代码分离,缓存
|
资源调度 JavaScript 前端开发
「使用 webpack 5 从0到1搭建React + TypeScript 项目环境」3. 资源模块
「使用 webpack 5 从0到1搭建React + TypeScript 项目环境」3. 资源模块
「使用 webpack 5 从0到1搭建React + TypeScript 项目环境」3. 资源模块