webpack5最新搭建配置——>1
package.json
<text>
{
"devDependencies": {
"@babel/core": "^7.16.0",
"@babel/preset-env": "^7.16.0",
"babel-loader": "^8.2.3",
"core-js": "^3.19.1",
"css-loader": "^6.5.1",
"css-minimizer-webpack-plugin": "^3.1.3",
"eslint": "^7.32.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-loader": "^4.0.2",
"eslint-plugin-import": "^2.25.3",
"file-loader": "^6.2.0",
"html-loader": "^3.0.1",
"html-webpack-plugin": "^5.5.0",
"less-loader": "^10.2.0",
"mini-css-extract-plugin": "^2.4.4",
"postcss-loader": "^6.2.0",
"postcss-preset-env": "^6.7.0",
"style-loader": "^3.3.1",
"url-loader": "^4.1.1",
"webpack": "^5.63.0",
"webpack-cli": "^4.9.1",
"webpack-dev-server": "^4.4.0"
},
"browserslist": {
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
],
"production": [
">0.2%",
"not dead",
"not op_mini all"
]
},
"eslintConfig": {
"extends": "airbnb-base"
}
}
</text>
webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CssMinimizerPlugin = require ( "css-minimizer-webpack-plugin" ) ;//压缩css
// process.env.NODE_ENV='development';
const commonCssLoader = [
MiniCssExtractPlugin.loader,//取代style-loader。作用:提取js中的css成单独文件
'css-loader',
'postcss-loader'
/*
css兼容性处理: postcss --> postcss-loader postcss-preset-env
帮postcss找到package.json中browserslist里面的配置,通过加载指定的css兼容性样式
"browserslist": {
// 开发环境---》设置node环境变量process.env.NODE_ENV='development'
"development": [
"alst 1 chrome version",
"alst 1 firefox version",
"alst 1 safari version"
],
// 默认是看生产环境
"production": [
">0.2%",
"not dead",
"not op_mini all"
]
}
*/
]
module.exports={
entry:'./src/js/index.js',
output:{
filename:'js/built.js', //打包输出的文件
path: path.resolve(__dirname,'build') //打包输出地址文件夹
},
performance: {//关闭资产过大警告
hints: false,
},
module:{
rules:[
// loader的配置
{
test: /\.js$/,
include: path.resolve(__dirname, 'src'),
enforce: 'pre',
loader:'eslint-loader',//配置eslint语法规范
options:{
fix:true
}
},
{
// babel-loader基本js兼容性处理,只能转换基本语法如promise不能转换
test: /\.js$/,
include: path.resolve(__dirname, 'src'),
loader:'babel-loader',
options:{
presets:[
[
'@babel/preset-env',
{
// 按需加载
useBuiltIns: 'usage',
// 指定core-js版本
corejs:{
version: 3.19
},
targets:{
chrome: '60',
firefox: '60',
ie: '9',
safari: '10',
edge: '17'
}
}
]
]
}
},
{
// 处理css
test:/\.css$/,
use:[
...commonCssLoader
],
},
{
test:/\.less$/,
use:[
...commonCssLoader,
'less-loader'
]
},
{
// 处理图片
test:/\.(jpg|png|svg|webp|gif)$/,
loader:'url-loader',
options:{
limit: 8 * 1024,
name:'[hash:7].[ext]',
// 关闭es6模块化
esModule:false,
outputPath:'imgs'
}
},
{
// 处理html中img资源
test:/\.html$/,
loader:'html-loader'
},
{
// 处理其它资源
exclude:/\.(html|js|css|less|jpg|png|gif)/,
loader:'file-loader',
options:{
name:'[hash:7].[ext]',
outputPath:'media'
}
}
]
},
optimization: {
minimize: true,
minimizer: [
new CssMinimizerPlugin(),
],
},
plugins:[
new HtmlWebpackPlugin({
template:'./src/index.html',
minify:{//html最小化
collapseWhitespace:true,//移除空格
removeComments:true//移除注释
}
}),
new MiniCssExtractPlugin({
filename:'css/built.css'
}),
],
mode:'production',
devServer:{
// contentBase:resolve(__dirname,'build'), //webpack4以下用法
static: { // static: ['assets']
directory: path.join(__dirname, 'build'),
},
compress:true,
port:3000,
open:true,
}
}
注意:postcss版本兼容性问题,因此不能直接在webpack.config.js中使用,需要在根目录创建postcss.config.js文件引入
module.exports={
plugins:[
require('postcss-preset-env')
]
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南