深入浅出webpack之加载和处理其他资源

  • 在webpack5之前,加载一些资源我们需要使用一些loader,比如row-loader、url-loader、file-loader;
  • 在webpack5之后,我们开始直接使用资源模块类型(asset module type)来代替上边的loader

asset module type

  • asset/resource发送一个单独的文件并导出url,之前用file-loader来实现

  • asset/inline导出一个资源的data URI,之前使用url-loader来实现

  • asset/souce导出资源的源代码,之前通过row-loader来实现(不常用)

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

  • asset/resource使用方式
    • asset module type不需要单独下载,webpack5中已经内置该模块,在配置文件可直接进行配置
    const path = require('path');
    module.exports = {
        entry:"./src/main.js",
        output:{
            filename:"awei.js",
            path:path.resolve(__dirname,"./build"),
            //导出文件配置方式一
            assetModuleFilename:"img/[name].[hash:6][ext]"
        },
        module:{
            rules:[
                {
                    test:/\.(png|jpg|jpeg|gif|svg)/,
                    type:"asset/resource",
                    //导出文件配置方式二
                    generator:{
                        filename:"img/[name].[hash:6][ext]"
                    }
                }
            ]
        }
    }
    
  • asset/inline使用方式
    const path = require('path');
    module.exports = {
        entry:"./src/main.js",
        output:{
            filename:"awei.js",
            path:path.resolve(__dirname,"./build")
        },
        module:{
            rules:[
                {
                    test:/\.(png|jpg|jpeg|gif|svg)/,
                    /*
                    这个属性只能生成base64,如果想实现小于指定大小转成base64,大于就放进图片目录,
                    则使用asset
                    */
                    type:"asset/inline"
                }
            ]
        }
    }
    
  • asset使用方式
     const path = require('path');
     module.exports = {
         entry:"./src/main.js",
         output:{
             filename:"awei.js",
             path:path.resolve(__dirname,"./build")
         },
         module:{
             rules:[
                 {
                     test:/\.(png|jpg|jpeg|gif|svg)/,
                     /*
                     这样配置就表示文件大于100kb的放进img目录下,小于100kb的直接转换为base64编码
                     */
                     type:"asset",
                     generator:{
                         filename:"img/[name][hash:6][ext]"
                     },
                     parser:{
                         dataUrlCondition:{
                             maxSize:100*1024 // 100kb
                         }
                     }
                 },
                 {
                     //加载字体文件同理,视频,音频文件也同理
                     test:/\.(ttf|woff|woff2)/,
                     type:"asset/resource",
                     generator:{
                         filename:"font/[name].[hash:6][ext]"
                     }
                 }
             ]
         }
     }
    
  • 示例代码

    https://gitee.com/weiLZ598/webpack-study.git
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值