在使用带有限制选项的url-loader时,是否有任何理由使用file-loader?

时间:2019-03-14 09:58:46

标签: webpack webpack-4

使用webpack-4

据我了解,如果您设置limit选项(在后台使用url选项),url-loader的行为将与file-loader相同,我注意到当我使用conf时,图像加载被破坏了。下面

{test: /\.(jpe?g|gif|bmp|mp3|mp4|ogg|wav|eot|ttf|woff|woff2|png|svg)$/, use: 'url-loader?limit=10000'}

{test: /\.(jpe?g|gif|bmp|mp3|mp4|ogg|wav|eot|ttf|woff|woff2|png|svg)$/, use: 'file-loader'}

当我删除file-loader时,效果很好url-loader可以满足您的所有需求。 以下是几个问题:

  1. 在文件加载器上方的conf中,它破坏了URL加载器的行为(可能是因为我未明确指定输出文件夹)我理解得很好吗?

  2. 您真正需要file-loader的情况是什么?

  3. 最好将两者结合使用的情况是什么?

1 个答案:

答案 0 :(得分:1)

  
      
  1. 在上面的conf中,文件加载器破坏了URL加载器的行为(可能是因为我没有明确指定输出文件夹)我理解得很好吗?
  2.   

在定义两个加载程序时,您将同时具有两个行为,即当文件大小小于10000字节时,将所有文件就地编码为base64字符串,并将所有文件复制到分发目录中。

如果您想要的行为是在大小<10000字节时编码为base64,或者在大小> 10000字节时复制到分发文件夹,则应该删除file-loader加载程序声明。

由于url-loader有一个fallback选项,并且默认值为file-loader,因此如果每个加载程序的目标文件都相同,则不需要第二个file-loader声明

  
      
  1. 您真正需要什么情况的文件加载器?
  2.   

无论何时要将文件复制到dist目录,并在捆绑的应用程序中引用此文件在公共路径(将提供静态资产的地方; publicPath webpack conf。属性)中的位置。例如,如果您配置file-loader以复制图像并将其命名为[hash].[ext],则可以执行以下操作:

const img = require('avatar.jpg')
console.log(img) // => /public/[hash].jpg
  
      
  1. 在什么情况下最好将两者(如果有)组合在一起?
  2.   

如果您有要始终复制的文件(file-loader)和要编码成束文件的文件(url-loader),请同时使用。请注意不要同时使用两个加载程序来定位相同的文件类型,否则,您可能正在复制那些也已使用url-loader编码到捆绑软件中的文件。