使用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
可以满足您的所有需求。
以下是几个问题:
在文件加载器上方的conf中,它破坏了URL加载器的行为(可能是因为我未明确指定输出文件夹)我理解得很好吗?
您真正需要file-loader
的情况是什么?
最好将两者结合使用的情况是什么?
答案 0 :(得分:1)
- 在上面的conf中,文件加载器破坏了URL加载器的行为(可能是因为我没有明确指定输出文件夹)我理解得很好吗?
在定义两个加载程序时,您将同时具有两个行为,即当文件大小小于10000字节时,将所有文件就地编码为base64字符串,并将所有文件复制到分发目录中。
如果您想要的行为是在大小<10000字节时编码为base64,或者在大小> 10000字节时复制到分发文件夹,则应该删除file-loader
加载程序声明。
由于url-loader
有一个fallback
选项,并且默认值为file-loader
,因此如果每个加载程序的目标文件都相同,则不需要第二个file-loader
声明
- 您真正需要什么情况的文件加载器?
无论何时要将文件复制到dist目录,并在捆绑的应用程序中引用此文件在公共路径(将提供静态资产的地方; publicPath
webpack conf。属性)中的位置。例如,如果您配置file-loader
以复制图像并将其命名为[hash].[ext]
,则可以执行以下操作:
const img = require('avatar.jpg')
console.log(img) // => /public/[hash].jpg
- 在什么情况下最好将两者(如果有)组合在一起?
如果您有要始终复制的文件(file-loader
)和要编码成束文件的文件(url-loader
),请同时使用。请注意不要同时使用两个加载程序来定位相同的文件类型,否则,您可能正在复制那些也已使用url-loader
编码到捆绑软件中的文件。