功能:用于压缩和优化 JavaScript 代码,支持 ES6+ 语法。
安装:
npm install terser-webpack-plugin --save-dev
const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
mode: 'production', // 设置为生产模式,启用优化
optimization: {
minimize: true, // 启用压缩
minimizer: [
new TerserPlugin({
terserOptions: {
compress: {
drop_console: true, // 删除 console.log 语句
},
output: {
comments: false, // 不保留注释
},
},
extractComments: false, // 不提取注释到单独文件
}),
],
},
};
配置项解释:
功能:用于压缩和优化 CSS 文件,支持多种 CSS 预处理器。
npm install css-minimizer-webpack-plugin --save-dev
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
module.exports = {
mode: 'production',
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader', // 将 CSS 插入到 DOM
'css-loader', // 处理 CSS 文件
],
},
],
},
optimization: {
minimizer: [
'...', // 继承默认的 JS 压缩配置
new CssMinimizerPlugin({
parallel: true, // 启用并行压缩
minimizerOptions: {
preset: [
'default',
{
discardComments: { removeAll: true }, // 删除所有注释
},
],
},
}),
],
},
};
配置项解释:
功能:自动生成 HTML 文件,并自动引入打包后的 JS 和 CSS 文件
npm install html-webpack-plugin --save-dev
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './src/index.js',
plugins: [
new HtmlWebpackPlugin({
title: '我的应用', // 生成的 HTML 标题
template: './src/index.html', // HTML 模板路径
filename: 'index.html', // 输出的文件名
inject: true, // 自动注入 JS 和 CSS
minify: {
removeComments: true, // 删除注释
collapseWhitespace: true, // 折叠空白
},
}),
],
};
配置项解释:
功能:将 CSS 提取到单独的文件中,而不是将其嵌入到 JavaScript 中。
npm install mini-css-extract-plugin --save-dev
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader, // 提取 CSS
'css-loader', // 处理 CSS 文件
],
},
],
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].[contenthash].css', // 输出文件名
}),
],
};
配置项解释:
功能:在每次构建之前清理输出目录,确保输出目录干净。
npm install clean-webpack-plugin --save-dev
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
plugins: [
new CleanWebpackPlugin(), // 清理输出目录
],
};
配置项解释:
1.TerserPlugin:压缩 JavaScript,减少文件大小。
通过理解这些插件的功能和配置,你可以有效地优化 Webpack 构建过程,提高应用的性能和用户体验