样式资源打包、html资源打包、图片资源打包、其他资源打包、devServer配置
/*
下载汇总:
style-loader、css-loader、less、less-loader
html-webpack-plugin
url-loader file-loader html-loader
webpack-dev-server
*/
/*
开发环境配置:能让代码运行
运行项目指令:
webpack 会将打包结果输出出去
npx webpack-dev-server 只会在内存中编译打包,没有输出
*/
const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './src/js/index.js',
output: {
filename: 'js/built.js',
path: resolve(__dirname, 'build')
},
module: {
rules: [
// loader的配置
{
// 处理less资源
test: /\.less$/,
use: ['style-loader', 'css-loader', 'less-loader']
},
{
// 处理css资源
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
//处理图片资源
test: /\.(jpg|png|gif)$/,
type: 'asset',
parser: {
//转base64的条件
dataUrlCondition: {maxSize: 8*1024}
},
generator: {
filename: "imgs/0[hash:10].[ext]"
}
},
{
// 处理html中img资源
test: /\.html$/,
loader: 'html-loader'
},
// 打包其他资源(除了html/js/css资源以外的资源)
{
// 排除css/js/html资源
exclude: /\.(css|js|html|less|jpg|png|gif)$/,
type: 'asset',
generator: {
filename: "media/000[hash:10].[ext]"
}
}
]
},
plugins: [
// plugins的配置
new HtmlWebpackPlugin({
template: './src/index.html'
})
],
mode: 'development',
devServer: {
compress: true,
port: 3000,
open: true
}
};