webpack系列学习八(静态资源集成②)

131 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情

url-loader

前面学习了file-loader处理图片资源,接下来学习url-loader

url-loaderfile-loader的加强版本。 url-loader内部使⽤了file-loader,所以可以处理file-loader所有的事情,但是遇到jpg格式的模块,会把该图⽚转换成base64格式字符串,并打包到js⾥。对⼩体积的图⽚⽐较合适,⼤图⽚不合适。

安装:npm install url-loader -D

示例:

  /**
   * url-loader依赖于file-loader
   * 图片体积大,转换为base64的时候,字符多,间接影响到了css的体积。
   *    所以对图片转成base4的话,一定要设置一个预值,当图片的体积大于这个值的话就不转化,小于这个值的话就转。
   * 转成base64的好处:把图片资源转换成base64的话,可以减少一次请求,从而达到优化的目的
   */
  {
    test: /\.(png|jpe?g|gif|webp)$/, // 解决图片格式问题
    use: {
      // loader: 'file-loader',
      loader: 'url-loader',
      options: {
        // name: 'images/[name].[ext]', // 方法二:不使用outputPath,在name中的名字前加上目录路径
        name: '[name].[ext]', // 解决图片名的问题
        outputPath: "images", // 解决问题目录管理:方法一:通过outputPath设置图片资源的存放位置
        // 图片资源如何引入的位置:解决对资源文件做了目录管理造成的路径引用出错问题
        publicPath: '../images', // ../images/img.jpg
        limit: 11 * 1024, // 1kb === 1024  limit: 预值
      }
    }
  },

图片压缩 image-webpack-loader

需求:批量处理图片压缩

存在的问题:打包的时候可能会报错,如果是loader方面的问题,可以切换为cnpm源

安装:npm install image-webpack-loader -D

image-webpack-loader必须在url-loader或者file-loader之前使用

  // image-webpack-loader必须在url-loader或者file-loader之前使用
  // loader执行顺序:当多个loader作用于同一个模块的时候,顺序为自下往上,自后往前
  {
    test: /\.(png|jpe?g|gif|webp)$/, // 解决图片格式问题
    use: [
      {
        // loader: 'file-loader',
        loader: 'url-loader',
        options: {
          // name: 'images/[name].[ext]', // 方法二:不使用outputPath,在name中的名字前加上目录路径
          name: '[name].[ext]', // 解决图片名的问题
          outputPath: "images", // 解决问题目录管理:方法一:通过outputPath设置图片资源的存放位置
          // 图片资源如何引入的位置:解决对资源文件做了目录管理造成的路径引用出错问题
          publicPath: '../images', // ../images/img.jpg
          limit: 11 * 1024, // 1kb === 1024  limit: 预值
        }
      },
      "image-webpack-loader"
    ]
  },