当前位置: 首页 > news >正文

Webpack5入门到原理12:处理 Html 资源

1. 下载包

npm i html-webpack-plugin -D

2. 配置

webpack.config.js

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

module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "static/js/main.js", // 将 js 文件输出到 static/js 目录中
    clean: true, // 自动将上次打包目录资源清空
  },
  module: {
    rules: [
      {
        // 用来匹配 .css 结尾的文件
        test: /\.css$/,
        // use 数组里面 Loader 执行顺序是从右到左
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.less$/,
        use: ["style-loader", "css-loader", "less-loader"],
      },
      {
        test: /\.s[ac]ss$/,
        use: ["style-loader", "css-loader", "sass-loader"],
      },
      {
        test: /\.styl$/,
        use: ["style-loader", "css-loader", "stylus-loader"],
      },
      {
        test: /\.(png|jpe?g|gif|webp)$/,
        type: "asset",
        parser: {
          dataUrlCondition: {
            maxSize: 10 * 1024, // 小于10kb的图片会被base64处理
          },
        },
        generator: {
          // 将图片文件输出到 static/imgs 目录中
          // 将图片文件命名 [hash:8][ext][query]
          // [hash:8]: hash值取8位
          // [ext]: 使用之前的文件扩展名
          // [query]: 添加之前的query参数
          filename: "static/imgs/[hash:8][ext][query]",
        },
      },
      {
        test: /\.(ttf|woff2?)$/,
        type: "asset/resource",
        generator: {
          filename: "static/media/[hash:8][ext][query]",
        },
      },
      {
        test: /\.js$/,
        exclude: /node_modules/, // 排除node_modules代码不编译
        loader: "babel-loader",
      },
    ],
  },
  plugins: [
    new ESLintWebpackPlugin({
      // 指定检查文件的根目录
      context: path.resolve(__dirname, "src"),
    }),
    new HtmlWebpackPlugin({
      // 以 public/index.html 为模板创建文件
      // 新的html文件有两个特点:1. 内容和源文件一致 2. 自动引入打包生成的js等资源
      template: path.resolve(__dirname, "public/index.html"),
    }),
  ],
  mode: "development",
};

3. 修改 index.html

去掉引入的 js 文件,因为 HtmlWebpackPlugin 会自动引入

<!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>
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
    <div class="box4"></div>
    <div class="box5"></div>
    <i class="iconfont icon-arrow-down"></i>
    <i class="iconfont icon-ashbin"></i>
    <i class="iconfont icon-browse"></i>
  </body>
</html>

4. 运行指令

npx webpack

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

相关文章:

  • linux上面hadoop配置集群
  • 现阶段Python和Java哪个更吃香?
  • Ubuntu使用QtCreator + CMake 开发C/C++程序
  • 克魔助手工具详解、数据包抓取分析、使用教程
  • 【备战蓝桥杯】图的遍历问题
  • C++后端笔记
  • MetaGPT-打卡-day2,MetaGPT框架组件学习
  • CSS 浮动 定位
  • 算法训练营第五十二天|300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组
  • 软件工程研究生后期总结
  • 【Vue技巧】vue3中不支持.sync语法糖的解决方案
  • Flink启动Yarn Session报错:Couldn‘t deploy Yarn session cluster
  • 免费chartGPT网站汇总
  • Android aar包集成与报错
  • [python]裁剪文件夹中所有pdf文档并按名称保存到指定的文件夹
  • 写点东西《什么是网络抓取?》
  • 音乐人声分离工具:极简的人声和背景音乐分离工具
  • OB OCP工具
  • Linux消息队列
  • C盘满了,我用什么思路清理?
  • 首次采用“顶置主星+侧挂从星”布局,长二丁“1箭12星”发射成功
  • “80后”德州市接待事务中心副主任刘巍“拟进一步使用”
  • 牛市早报|中方调整对美加征关税措施,五部门约谈外卖平台企业
  • 俄副外长:俄美两国将举行双边谈判
  • 沈阳卫健委通报“健康证”办理乱象:涉事医院已被立案查处
  • 中山大学人类学系原系主任冯家骏逝世,享年95岁