默认情况下, webpack 无法处理 css 文件中的 url 地址,不管是图片还是 字体库, 只要是 URL 地址,都处理不了,所以我们要使用 url-loader进行处理图片的url地址
安装 cnpm i url-loader file-loader -D
webpack.config.js文件
var path = require('path')
var htmlWebpackPlugin = require('html-webpack-plugin')
const webpack = require('webpack');
module.exports = {
entry: path.join(__dirname, './src/main.js'),
output: {
path: path.join(__dirname, './dist'),
filename: 'bundle.js'
},
devServer: {
open: true,
port: 3000,
contentBase: 'src',
hot: true
},
plugins: [ /
new webpack.HotModuleReplacementPlugin(),
new htmlWebpackPlugin({
template: path.join(__dirname, './src/index.html'),
filename: 'index.html'
})
],
module: {
rules: [ // 第三方模块的匹配规则
{ test: /\.css$/, use: ['style-loader', 'css-loader'] }, // 配置处理 .css 文件的 第三方 loader 规则
{ test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] }, // 配置 处理 .less 文件的第三方 loader 规则
{ test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
// { test: /\.(jpg|png|gif|bmp|jpeg)$/, use: 'url-loader'} // 不传参 图片将 转为 base64 格式的字符串
{ test: /\.(jpg|png|gif|bmp|jpeg)$/, use: 'url-loader?limit=7701460&name=[hash:8]-[name].[ext]'}
]
}
}
loader处理 图片路径
-
limit
参数:给定的值,是图片的大小,单位是 byte, 如果我们引用的图片,大于或等于给定的 limit 值,则不会转为 base64 格式的字符串,如果 图片小于给定的 limit 值,则会被转为 base64的字符串 -
name
参数:使图片使用图片自定义的名称, [hash:10] 为hash 码截取前10位,最大位数可以填32位,因为生成的hash码只有32位。
注意:
- 当使用
url-loader
不添加任何参数时,默认图片将转为 base64 格式的字符串。 - 在使用
name
参数时,如果两个图片的名字相同内容不同的照片同时调用,后加载的图片会先覆盖先加载的图片,通过加上[hash:10] 来区分两张图片,防止图片覆盖。