webpack基本配置---图片资源打包

在webpack打包图片资源的时,先说下的它的优缺点以及一些小问题

  • 优点:减少请求数量(减轻服务器压力)
  • 缺点: 图片体积会更大(文件请求熟读更慢)
  • 小问题: 我们一般可以利用css中的background-image:url()引入图片,以及在html中直接通过img标签直接将图片引入,而待会会运用到loader将解决这些问题,从中会运用到’url-loader’,‘html-loader’
  • url-loader: 是针对于css图片引入的方式,默认使用es6模块化解析
  • html-loader:是针对于html使用标签直接引入,默认使用Commonjs解析
  • 所以为了使两个解释模式一样,可以采用关闭es6解析的方法即可。在下述配置代码中会说明
  • 代码如下:
const { resolve } = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
    entry:'./src/index.js',
    output: {
        filename:'built.js',
        path: resolve(__dirname,'build')
    },
    module:{
        rules:[
            // loader配置
            {
                test:/.\less$/,
                // 要使用多个Loader处理用use
                use:[
                    'style-loader',
                    'css-loader',
                    'less-loader'
                ]
            },
            // 问题:默认处理不了html中img图片
            // 处理图片资源
            {
                test:/\.(jpg|png|gif)$/,
                // 使用一个loader
                // 下载url-loader file-loader
                loader:'url-loader',
                options: {
                    // 8 * 1024表示 图片大小小于8KB,就会被base64处理
                    // 优点: 减少请求数量(减轻服务器压力)
                    // 缺点: 图片体积会更大(文件请求熟读更慢)
                    limit:  8 * 1024,
                    // 问题:因为url-loader默认使用es6模块化解析,而html-loader引入图片是commonjs
                    // 解析时会出问题:[object Module]
                    // 解决:关闭url-loader的es6模块化,使用commonjs解析
                    esModule:false,
                    // 给图片进行重命名
                    // [hash:10]取图片的hash的前10位
                    // [text]取文件原来扩展名
                    name:'[hash:10].[ext]'
                }
            },
            {
                test:/\.html$/,
                // 处理Html中img图片(负责引入img,从而能被url-loader进行处理)
                loader:'html-loader'
            }
        ]
    },
    plugins:[
        new HtmlWebpackPlugin({
            template:'./src/index.html'
        })
        
    ],
    mode:'development'

文件目录,如图:
在这里插入图片描述
index.html测试内容:
在这里插入图片描述
index.less引入图片内容测试(记住,要将less文件引入到入口文件index.js),如图:
在这里插入图片描述
打包后的文件目录,如图:
在这里插入图片描述
图片体积小于8kb,被base64处理了:
在这里插入图片描述
built.js打包后的图片也是可以看到被base64处理了,并且commonjs解析了:
在这里插入图片描述
图片资源基础配置,以及遇到过的一些小问题。在这里已经解释了。后续还会继续webpack相关的知识以及优化

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值