// 设置webpack基础配置
// 开发环境配置: 能让代码运行
// 运行项目指令
// webpack 会将打包结果输出出去
// npx webpack-dev-server 只会在内存中编译打包, 没有输出
const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
// 入口文件
entry: './src/js/indx.js',
// 输出
output: {
filename: 'js/built.js',
path: resolve(__dirname, 'build')
},
module: {
rules: [
// loader的配置
// 要使用多个loader 要是use 单个就使用loader
{
// 处理less资源
test: /\.less$/,
use: ['style-loader', 'css-loader', 'less-loader']
},
{
// 处理css资源
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
// 处理图片资源
test: /\.(jpg|png|gif)$/,
loader: 'url-loader',
options: {
// 图片小于8M的会转成base64处理的
limit: 8*1024,
// 命名去前哈希值前10位和后缀名拼接
name: '[hash:10].[ext]',
// 关闭es6模块化
esModule: false,
// 打包完成后放到imgs文件夹下面
outputPath: 'imgs'
}
},
{
// 处理html中img资源
test: /\.html$/,
loader: 'html-loader'
},
{
// 处理其他资源
exclude: /\.(html|js|css|less|jpg|png|gif)/,
loader: 'file-loader',
options: {
name: '[hash:10].[ext]',
outputPath: 'media'
}
}
]
},
plugins: [
// plugins 的相关配置
new HtmlWebpackPlugin({
template: './src/index.html'
})
],
mode: 'development',
// 进行热更新 只要哟变化就会自动打包运行
devServer: {
// 打包后放到build文件夹
contentBase: resolve(__dirname, 'build'),
// 空气Gzip压缩
compress: true,
// 默认端口号
port: 3000,
//运行成功后自动打开浏览器
open: true
}
}