webpack4知识整理(四)-打包图片

  • 这次来处理对图片的打包

  • 首先需要下载以下loader

npm install file-loader -D
     {
        test:/\.(png|jpg|gif)$/,
        use:['file-loader']
      },
  • 在module的rules新加入规则

  • 引入图片的方式为 import img from '路径' 此时是在JS文件中引入图片

  • 在css中引入图片直接用url('路径') 的方式就会打包

  • 在html中引入img图片需要安装另一个loader

npm install html-withimg-loader -D
  • 需要在module的rules加入新的规则

     {
        test:/\.html$/,
        use:'html-withimg-loader'
      },
  • 此时在html中引入的img图片就可以被一起打包了

  • 到这里可以进行一些优化,比如小一点的图片,转换成base64编码的方式来减少http请求

npm install url-loader -D
  • module里的rules规则变成

      {
        test:/\.(png|jpg|gif)$/,
        use:{
          loader:'url-loader',
          options:{
            limit:100*1024
          }
        }
      },
  • options里的limit代表如果大于这个值就不用base64的方式进行打包

 

  • 可以进行打包分类

      {
        test:/\.(png|jpg|gif)$/,
        use:{
          loader:'url-loader',
          options:{
            limit:10*1024,
            outputPath:'/img/' // 打包后的路径
          }
        }
      },
  • 同样css也可以打包分类

    new MiniCssExtractPlugin({
      filename:'main.css'
    }),

    //改为

    new MiniCssExtractPlugin({
      filename:'css/main.css'
    }),
  • 可以给每一个资源加上CDN地址,在webpack配置文件中output属性中加入publicPath

  output:{
    filename:'bundle.[hash:8].js',   
    path:path.resolve(__dirname,'./dist'),
    publicPath:'https://www.test.com'
  },

3d9da690092b0abf2fc4ce58e9a87c8db32.jpg

  • 上面这种情况是给所有资源都加CDN地址

  • 如果只需要给某一个资源加上CDN地址,在他对一个loader的options中配置publicPath就可以了,这里用图片loader举例

      {
        test:/\.(png|jpg|gif)$/,
        use:{
          loader:'url-loader',
          options:{
            limit:10*1024,
            outputPath:'/img/',
            publicPath: 'https://www.test.com'
          }
        }
      },

 

转载于:https://my.oschina.net/u/3996596/blog/3044377

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值