# 如何打包图片
# file-loader:
- 移动file到dist
- 返回生成的文件名
import avatar from './avatar.jpg';
console.log(avatar)
// 输出的是文件名 例如ababafbadf.jpg。可以通过配置options来控制文件名
{
rules:[{
test:/\.(jpg|png|gif)$/,
use:{
loader: 'file-loader',
options:{
name:'[name]_[hash].[ext]',
outputPath:'images/'
}
}
}]
}
[name]是原来的文件名
[hash]是图片的hash值
[ext]是原来的扩展名
# url-loader 与 file-loader的区别
url-loader 在文件大小(单位 byte)小于limit时把图片转成base64格式。 大于limit时跟file-loader一样,返回一个url地址。
最佳实践: 在options中配置limit,只把小图片转成base64. 如果图片过大,虽然减少了图片的请求,但是js加载解析图片的时间过长,白屏时间就长。
{
rules:[{
test:/\.(jpg|png|gif)/,
use:{
loader: 'url-loader',
options: {
// 小于 5kb 的图片用 base64 格式产出
// 否则,依然延用 file-loader 的形式,产出 url 格式
limit: 5 * 1024,
name:'[name]_[hash].[ext]',
outputPath:'images/',
// 设置图片的 cdn 地址(也可以统一在外面的 output 中设置,那将作用于所有静态资源)
publicPath: 'http://cdn.abc.com'
},
}
}]
}