返回

用loader认识那些webpack不认识的朋友

前端

人们常常将Webpack称作打包工具,实际上,它的功能不仅仅如此。在打包之前,它还需要对各种文件进行处理。

Webpack只认识js和json文件,当遇到其他文件时,它会抛出错误,无法继续打包。这时,loader就登场了。

loader的作用是让Webpack识别和处理除js和json之外的文件,并将它们转换为有效的模块,以便后续打包。

常用loader:

  1. style-loader:将CSS代码转为CommonJS模块,然后交给css-loader处理。
  2. css-loader:加载、解析和编译CSS文件,并将其转换为CommonJS模块。
  3. less-loader:解析和编译LESS文件,将其转换为CSS,再交给css-loader处理。
  4. sass-loader:解析和编译SASS文件,将其转换为CSS,再交给css-loader处理。
  5. file-loader:用于加载并输出任意类型的文件,包括图片、视频、字体等。

在Webpack中使用loader非常简单,只需在webpack.config.js文件中添加配置即可。配置格式为:

module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          'style-loader',
          'css-loader'
        ]
      }
    ]
  }
};

在上面的例子中,我们配置了两个loader:style-loader和css-loader。它们将共同处理所有的CSS文件。

loader还可以处理图片和字体等资源文件,常用的loader有file-loader和url-loader。

file-loader用于加载并输出任意类型的文件,包括图片、视频、字体等。配置格式为:

module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpg|gif)$/,
        use: [
          {
            loader: 'file-loader',
            options: {
              name: '[name].[ext]'
            }
          }
        ]
      }
    ]
  }
};

在上面的例子中,我们将所有png、jpg和gif图片交给file-loader处理。

url-loader用于加载并输出较小的文件,如图片、字体等。当文件大小小于某个阈值时,url-loader会将文件转换为base64编码的字符串并内联到CSS或JS文件中。否则,它将使用file-loader加载文件。配置格式为:

module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpg|gif)$/,
        use: [
          {
            loader: 'url-loader',
            options: {
              limit: 8192
            }
          }
        ]
      }
    ]
  }
};

在上面的例子中,我们将所有png、jpg和gif图片交给url-loader处理。当文件大小小于8KB时,url-loader会将文件转换为base64编码的字符串并内联到CSS或JS文件中。否则,它将使用file-loader加载文件。

通过使用loader,我们可以让Webpack处理各种各样的文件,从而实现无缝打包。