webpack--处理资源

webpack.config.js中进行配置

javascript 复制代码
const path = require('path')
module.exports = {
  // 入口
  entry: './src/main.js',
  // 输出
  output: {
    // 文件的输出路径
    path: path.resolve(__dirname, 'dist'),
    // 入口文件打包输出的文件名
    filename: 'js/main.js',
    // 自动清空上次打包结果 原理:在打包前,将path整个目录内容清空 再进行打包
    clean: true,
  },
  // 加载器
  module: {
    rules: [
      // loader的配置
      // css-loader 处理css文件
      {
        test: /\.css$/, // 只检测xxx文件
        use: [
          // 执行顺序从右到左(从下到上)
          'style-loader', // 将js中css通过创建style标签的样式添加到html中生效
          'css-loader', // 将css资源编译成common.js的模块到js中
        ],
      },
      // less-loader 处理less文件
      {
        test: /\.less$/, // 只检测less文件
        use: ['style-loader', 'css-loader', 'less-loader'],
      },
      // sass-loader 处理scss文件
      {
        test: /\.s[ac]ss$/,
        use: [
          // 将 JS 字符串生成为 style 节点
          'style-loader',
          // 将 CSS 转化成 CommonJS 模块
          'css-loader',
          // 将 Sass 编译成 CSS
          'sass-loader',
        ],
      },
      // stylus-loader 处理styl文件
      {
        test: /\.styl$/,
        use: ['style-loader', 'css-loader', 'stylus-loader'], // 将styl文件编译为 CSS
      },
      // 处理图片
      {
        test: /\.(png|jpe?g|gif|webp|svg)$/,
        // 会转base64
        type: 'asset',
        parser: {
          dataUrlCondition: {
            // 小于10kb的图片转base64
            // 优点:减少请求数量 缺点:体积会更大
            maxSize: 10 * 1024, // 10kb,
          },
        },
        generator: {
          // hash:5 hash值取前5位数(打包后的图片名称)
          filename: 'images/[hash:5][ext][query]',
        },
      },
      // 处理字体文件
      {
        test: /\.(ttf|woff2?)$/,
        // 不会转base64
        type: 'asset/resource',
        generator: {
          filename: 'font/[hash:5][ext][query]',
        },
      },
      // 处理其他资源
      {
        test: /\.(mp3|mp4|avi)$/,
        // 不会转base64
        type: 'asset/resource',
        generator: {
          filename: 'media/[hash:5][ext][query]',
        },
      },
    ],
  },
  // 插件
  plugins: [
    // plugin的配置
  ],
  // 模式
  mode: 'development',
}
相关推荐
light blue bird21 分钟前
主子端台二分法任务汇总组件
前端·数据库·.net·桌面端winform
jeffwang1 小时前
我做了个让 AI 看屏幕跑测试的工具,因为 Playwright 测不了我的 Flutter Web
前端
HSunR2 小时前
dify 搭建ai作业批改流
开发语言·前端·javascript
代码不加糖2 小时前
2026 跨境电商独立站实战:从 0 到 1 搭建高转化 SaaS 商城(附源码)
开发语言·前端·javascript
亲亲小宝宝鸭2 小时前
拖一拖控件,拖出个问卷(低代码平台)
前端·低代码
江南十四行2 小时前
ReAct Agent 基本理论与项目实战(一)
前端·react.js·前端框架
We་ct3 小时前
LeetCode 72. 编辑距离:动态规划经典题解
前端·算法·leetcode·typescript·动态规划
小呆呆6663 小时前
Codex 穷鬼大救星
前端·人工智能·后端
当时只道寻常4 小时前
Vue3 + IntersectionObserver 实现高性能图片懒加载
前端
sakiko_4 小时前
UIKit学习笔记3-布局、滚动视图、隐藏或显示视图
前端·笔记·学习·objective-c·swift·uikit