秋雨
首页
  • HTML
  • CSS
  • JavaScript
设计模式
webpack
  • 前端常识
  • ES
  • React
  • Redux
  • ReactRouter
  • 事件循环
  • 浏览器渲染流程
  • Vue项目性能优化
  • Vue
  • App
Github
首页
  • HTML
  • CSS
  • JavaScript
设计模式
webpack
  • 前端常识
  • ES
  • React
  • Redux
  • ReactRouter
  • 事件循环
  • 浏览器渲染流程
  • Vue项目性能优化
  • Vue
  • App
Github
  • webpack简介
  • 工程简介
  • 前言
  • 基本使用
  • 基本配置
  • 开发模式介绍
  • 处理样式资源
  • 处理图片资源
  • 修改输出资源的名称和路径
  • 自动清空上次打包文件
  • 打包字体图标资源
  • 处理其他资源
  • 处理js资源
  • 处理HTML资源
  • 开发服务器&自动化
  • 生产模式介绍
  • Css处理
  • html压缩
  • 基本配置总结
  • 高级
  • 提升开发体验
  • 提升打包构建速度
  • 减少代码体积
  • 优化代码运行性能
  • 总结
  • 原理
  • Loader原理
  • Plugin原理

处理字体图标资源

1.下载字体图标文件

  1. 打开阿里巴巴矢量图图标库。
  2. 选择想要的图标添加到购物车,统一下载到本地。

2.添加字体图标资源

  • src/fonts/iconfont.ttf
  • src/fonts/iconfont.woff
  • src/fonts/iconfont/woff2
  • src/css/iconfont.css
    • 注意字体文件路径需要修改
  • src/main.js
import count from './js/count.js';
import sum from './js/sum.js';
import './css/iconfont.css';
import "./css/index.css";
import "./less/index.less";
import './sass/index.sass';
import './sass/index.scss';
import './styl/index.styl'
console.log(count(2, 1));
console.log(sum(1, 2, 3, 4));
  • public/index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div>Hello World Webpack</div>
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
    <div class="box4"></div>
    <div class="box5"></div>
    <span class="iconfont icon-aixin"></span>
    <span class="iconfont icon-bianji"></span>
    <span class="iconfont icon-Dyanjing"></span>
    <span class="iconfont icon-caidan"></span>
    <script src="../dist/static/js/main.js"></script>
  </body>
</html>

3.配置

const path = require("path");

module.exports = {
  //入口
  entry: "./src/main.js", //相对路径
  //输出
  output: {
    //文件的输出路径
    //__dirname nodejs的变量,代表当前文件的文件夹目录
    path: path.resolve(__dirname, "dist"), //相对路径
    //文件名
    filename: "static/js/main.js",
    //自动清空上次打包的内容
    //原理:在打包前,将path整个目录内容清空,在进行打包。
    clean: true,
  },
  //加载器
  module: {
    rules: [
      {
        // 用来匹配 .css 结尾的文件
        test: /\.css$/,
        // use 数组里面 Loader 执行顺序是从右到左
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.less$/,
        //loader 只能使用一个 loader
        use: [
          // compiles Less to CSS
          "style-loader",
          "css-loader",
          "less-loader",
        ],
      },
      {
        test: /\.s[ac]ss$/i,
        use: [
          // 将 JS 字符串生成为 style 节点
          "style-loader",
          // 将 CSS 转化成 CommonJS 模块
          "css-loader",
          // 将 Sass 编译成 CSS
          "sass-loader",
        ],
      },
      {
        test: /\.styl$/,
        use: [
          "style-loader",
          "css-loader",
          "stylus-loader", // 将stylus编译成css文件
        ],
      },
      {
        test: /\.(png|jpe?g|gif|webp)$/,
        type: "asset",
        parser: {
          //小于10kb的图片转base64
          //优点:减少请求数量 缺点:体积会更大
          dataUrlCondition: {
            maxSize: 10 * 1024, // 10kb
          },
        },
        generator: {
          //输出图片名称
          //[hash:10] hash 取前10位
          filename: "static/images/[hash:10][ext][query]",
        },
      },
      {
        test: /\.(ttf|woff2?)$/,
        type: "asset/resource",
        generator: {
          //输出名称
          filename: "static/media/[hash:10][ext][query]",
        },
      },
    ],
  },

  //插件
  plugins: [
    //plugin的配置
  ],
  //模式
  mode: "development",
};

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

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

4.运行指令

npx webpack

打开 index.html 页面查看效果。

最后更新:
贡献者: Mrlishizhen
Prev
自动清空上次打包文件
Next
处理其他资源