const { resolve } = require(\'path\')
const HtmlWebpackPlugin = require(\'html-webpack-plugin\')
module.exports = {
entry: resolve(__dirname, \'src/index.js\'),
output: {
filename: \'built.js\',
path: resolve(__dirname, \'build\'),
publicPath: \'./\' // webpack5.1以上版本需要添加
},
module: {
rules: [
{
test: /\.less$/,
// 要使用多个多个loader处理用use
use: [\'style-loader\', \'css-loader\', \'less-loader\']
},
{
// 问题:默认处理不了html中的img图片
// 处理图片资源
test: /\.(jpg|png|gif)$/,
// 只需使用一个loader:url-loader
// 但是需要下载url-loader file-loader
loader: \'url-loader\',
options: {
// 图片大小小于8kb,就会被base64处理
// 优点:减少请求数量(减轻服务器压力)
// 缺点:图片体积会更大(文件请求速度更慢)
limit: 8 * 1024,
// 问题:因为url-loader默认使用es6进行模块化解析,而html-loader引入图片是commonjs
// 解析时会出问题:[object Module]
// 解决:关闭url-loader的es6模块化,使用commonjs解析
esModule:false, // 新版本已经不需要了
// 给图片进行重命名
// [hash:10]取图片的hash的前10位
// [ext]取文件原来扩展名
name: \'[hash:10].[ext]\'
}
},
{
test: /\.html$/,
// 处理html文件的img图片(负责引入img,从而能被url-loader进行处理)
loader: \'html-loader\'
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: resolve(__dirname, \'src/index.html\')
})
],
mode: \'development\'
}