webpack学习-处理less,图片,字体

以下是学习笔记:

1.下载相关处理包,并在config配置文件中配置loader项

2.前文中写过处理css文件的步骤为

// 使用步骤:
// 1 安装:  npm i -D style-loader css-loader
// 2 在 webpack.config.js 中的 module 里面配置loader处理规则 { test: /\.css$/, use: ['style-loader', 'css-loader'] }

3.处理less文件

// 步骤:
// 1 安装包: npm i -D less-loader less
//           npm i -D style-loader css-loader
// 2 在 webpack.config.js 的 module 中添加一个规则
//{ test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] },这里less-loader会自动去调用less模块处理less语法

4.处理图片(file-loader和url-loader)

4.1使用file-loader

// 1 安装: npm i -D file-loader
// 2 在 webpack.config.js 中的 module 里面添加一个rules
//{ test: /\.(jpg|jpeg|png|gif)$/,use: 'file-loader'}

//在 file-loader 中,会使用 md5 处理图片文件,对于同一张不同名称的图片,只会加载一次,可以达到减少网络请求,加快网站的加载速度的效果

4.2使用url-loader

// 推荐使用 url-loader
// 1 安装: npm i -D url-loader
//   最好将 file-loader 一起安装
// 2 在 webpack.config.js 中,只要将 file-loader 替换为 url-loader 就可以了

{
  test: /\.(jpg|jpeg|png|gif)$/,

  //loader: 'url-loader',如果不设置大小限制,直接这样配置即可

  use: [

      {
        loader: 'url-loader',
        options: {
        // 单位:字节, 8Kb
        // 如果图片的大小比 8kb 小,图片就会被处理为 base64
        // 如果图片的大小大于或等于 8kb ,url-loader会自动调用 file-loader 来对图片重命名处理
        // limit: 8192
        }
      }
     ]
}

// url-loader 默认情况下,会将图片处理为base64编码的格式,直接内嵌到页面中,使得页面取消了一次该图片的请求,提高了性能,但不适合大图片
// data:image/png;base64, ....

5.处理字体

与处理图片一样,推荐使用url-loader(使用file-loader会被MD5处理重命名,使用url-loader则会被格式化为base64,也可以添加阈值)

{
        test: /\.(eot|svg|ttf|woff|woff2|otf)$/,
        // use: 'file-loader'
        use: 'url-loader'
}

6.配置文件模板

// 配置loader
  module: {
    rules: [
      // test 是一个正则, 用来匹配加载文件的路径
      //  比如: import './css/index.css'

      // use 表示使用哪个loader来处理这个类型的文件
      // 注意: 有顺序!!!
      // 处理过程是: 从右往左

      // css-loader 读取CSS文件,将其转化为一个模块
      // style-loader 拿到css-loader读取到的css文件内容,然后,创建一个style标签,插入到head
      { test: /\.css$/, use: ['style-loader', 'css-loader'] },
      { test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] },

      // 处理图片
      // {
      //   test: /\.(jpg|jpeg|png|gif)$/,
      //   use: 'file-loader'
      // },

      {
        test: /\.(jpg|jpeg|png|gif)$/,
        // use: 'url-loader'
        use: [
          {
            loader: 'url-loader',
            options: {
              // 单位:字节, 8Kb
              // 如果图片的大小比 8kb 小,图片就会被处理为 base64
              // 如果图片的大小大于或等于 8kb ,url-loader会自动调用 file-loader 来对图片重命名处理
              // limit: 8192
              limit: 49877
            }
          }
        ]
      },

      // 处理字体
      {
        test: /\.(eot|svg|ttf|woff|woff2|otf)$/,
        // use: 'file-loader'
        use: 'url-loader'
      },

      // 配置babel
      {
        test: /\.js$/,
        use: 'babel-loader',
        // 排除掉不需要 babel 处理的文件路径
        // 一般,都会将 node_modules 排除掉
        exclude: /node_modules/
      },

      // 处理Vue单文件组件
      {
        test: /\.vue$/,
        use: 'vue-loader'
      }
    ]
  }

 

posted @ 2019-10-07 22:30  Zhou_135  阅读(380)  评论(0编辑  收藏  举报