Webpack 常见配置项
1. entry
指定一个或多个入口点,Webpack 从这里开始构建依赖图。
entry: {
main: './src/index.js',
admin: './src/admin.js'
}
2. output
指定输出文件的路径和名称。
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist'),
publicPath: '/assets/' // 用于生成的资源 URL
}
3. module
配置如何处理不同类型的模块。
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /\.(png|jpe?g|gif)$/i,
use: [
{
loader: 'file-loader',
options: {
outputPath: 'images'
}
}
]
}
]
}
4. resolve
配置模块解析规则,例如别名、扩展名等。
resolve: {
extensions: ['.js', '.json', '.jsx'],
alias: {
'@': path.resolve(__dirname, 'src')
}
}
5. plugins
配置插件,用于执行更复杂的任务,如优化、压缩、生成 HTML 文件等。
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
}),
new MiniCssExtractPlugin({
filename: '[name].css'
})
]
6. optimization
配置优化选项,如代码分割、懒加载、Tree Shaking 等。
optimization: {
splitChunks: {
chunks: 'all',
minSize: 10000,
maxSize: 0,
minChunks: 1,
maxAsyncRequests: 10,
maxInitialRequests: 5,
automaticNameDelimiter: '~',
name: true,
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10,
filename: 'vendors~[name].js'
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true,
filename: 'common~[name].js'
}
}
},
usedExports: true, // 启用 Tree Shaking
minimize: true, // 启用压缩
minimizer: [new TerserPlugin()] // 使用 TerserPlugin 进行压缩
}
7. devServer
配置开发服务器,用于热重载、实时重新加载等。
devServer: {
contentBase: path.join(__dirname, 'dist'), // 指定开发服务器提供静态文件的目录
compress: true, // 启用 gzip 压缩
port: 9000, // 指定开发服务器监听的端口号
hot: true, // 启用热模块替换(Hot Module Replacement, HMR)
open: true // 启动开发服务器后自动打开浏览器
}
8. mode
设置构建模式,development 或 production。
mode: 'production'
9. externals
排除某些模块,使其不在打包结果中,通常用于全局变量或 CDN 引入的库。
externals: {
jquery: 'jQuery'
}
10. performance
配置性能提示,例如文件大小限制等。
performance: {
hints: 'warning', // 可以是 'error' 或 'warning'
maxAssetSize: 200000, // 单个文件的最大体积(字节)
maxEntrypointSize: 400000, // 入口点的最大体积(字节)
assetFilter: assetFilename => !/(\.map$)/.test(assetFilename) // 过滤文件
}
11. stats
配置构建输出的详细程度。
stats: 'errors-only' // 只显示错误信息
12. target
指定打包的目标环境,如 web、node 等。
target: 'web'
13. devtool
配置源映射(source map),用于调试。
devtool: 'source-map'
原文地址:https://blog.csdn.net/weixin_57837275/article/details/142462766
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!