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

如下是学习笔记:css

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

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

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

3.处理less文件webpack

// 步骤:
// 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)web

4.1使用file-loadernpm

// 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-loaderbabel

// 推荐使用 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',若是不设置大小限制,直接这样配置便可less

  use: [svg

      {
        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'
      }
    ]
  }
相关文章
相关标签/搜索