常用 Webpack Plugin 汇总

embedded/2025/2/24 3:56:15/

一、HtmlWebpackPlugin ⭐⭐⭐⭐⭐

作用

自动生成 HTML 文件,并将打包后的 JavaScript、CSS 等资源自动注入到生成的 HTML 文件中。当打包文件名包含哈希值时,能避免手动引入资源的繁琐。

使用场景

单页或多页应用开发中,只要需生成 HTML 并引入打包资源即可使用。

语法介绍

npm install html-webpack-plugin --save-dev
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {plugins: [new HtmlWebpackPlugin({title: 'My App',template: './src/index.html',filename: 'index.html'})]
};

二、MiniCssExtractPlugin ⭐⭐⭐⭐

作用
将 CSS 从 JavaScript 代码中提取出来,生成单独的 CSS 文件,利于浏览器并行加载和缓存管理。

使用场景
生产环境中优化页面性能。

语法介绍

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-loader']}]},plugins: [new MiniCssExtractPlugin({filename: '[name].[contenthash].css'})]
};

三、CleanWebpackPlugin ⭐⭐⭐⭐

作用
每次打包前清空输出目录,避免旧文件残留。

使用场景
项目开发和部署时,确保输出目录干净。

语法介绍

npm install clean-webpack-plugin --save-dev
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {plugins: [new CleanWebpackPlugin()]
};

四、TerserWebpackPlugin ⭐⭐⭐⭐

作用
压缩和混淆 JavaScript 代码,减少文件体积,支持并行压缩。

使用场景
生产环境减小 JavaScript 文件大小。

语法介绍

npm install terser-webpack-plugin --save-dev
const TerserPlugin = require('terser-webpack-plugin');
module.exports = {optimization: {minimizer: [new TerserPlugin({terserOptions: {compress: { drop_console: true }}})]}
};

五、OptimizeCSSAssetsPlugin ⭐⭐⭐

作用
对提取的 CSS 文件进行压缩和优化,移除空格、注释等。

使用场景
生产环境与 MiniCssExtractPlugin 配合优化 CSS。

语法介绍

npm install optimize-css-assets-webpack-plugin --save-dev
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
module.exports = {optimization: {minimizer: [new OptimizeCSSAssetsPlugin({})]}
};

六、CopyWebpackPlugin ⭐⭐⭐

作用
将单个文件或整个目录复制到打包输出目录。

使用场景
项目中有无需 Webpack 处理的静态资源时。

语法介绍

npm install copy-webpack-plugin --save-dev
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {plugins: [new CopyWebpackPlugin({patterns: [{ from: 'src/assets', to: 'assets' }]})]
};

七、DefinePlugin ⭐⭐⭐

作用
在编译时创建全局常量,可用于区分不同环境。

使用场景
根据不同环境(开发、测试、生产)设置不同配置。

语法介绍

const webpack = require('webpack');
module.exports = {plugins: [new webpack.DefinePlugin({'process.env.NODE_ENV': JSON.stringify('production')})]
};

八、HotModuleReplacementPlugin ⭐⭐⭐⭐

作用
实现热模块替换(HMR)功能,不刷新整个页面,只更新变化模块。

使用场景
开发环境提高开发效率。

语法介绍

const webpack = require('webpack');
module.exports = {devServer: { hot: true },plugins: [new webpack.HotModuleReplacementPlugin()]
};

九、ProvidePlugin ⭐⭐⭐

作用
自动加载模块,而不必在每个文件中都引入。例如,当你在项目中频繁使用某个库(如 jQuery)时,使用该插件可以避免在每个文件中都写 import $ from 'jquery'

使用场景
项目中某些模块被大量使用,为了简化代码引入过程。

语法介绍

npm install jquery --save
const webpack = require('webpack');
module.exports = {plugins: [new webpack.ProvidePlugin({$: 'jquery',jQuery: 'jquery'})]
};

十、UglifyJsWebpackPlugin ⭐⭐

作用
压缩 JavaScript 代码,移除不必要的空格、注释,缩短变量名等,减小文件体积。不过在 Webpack 4 之后,推荐使用 TerserWebpackPlugin,因为它支持 ES6+ 语法的压缩。

使用场景
生产环境对 JavaScript 代码进行压缩。

语法介绍

npm install uglifyjs-webpack-plugin --save-dev
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
module.exports = {optimization: {minimizer: [new UglifyJsPlugin()]}
};

十一、WebpackBundleAnalyzer ⭐⭐⭐

作用
生成可视化的打包分析报告,展示每个模块的大小、依赖关系等信息,帮助开发者找出打包文件中体积过大的模块,从而进行优化。

使用场景
优化打包文件体积,分析依赖关系时。

语法介绍

npm install webpack-bundle-analyzer --save-dev
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = {plugins: [new BundleAnalyzerPlugin()]
};

十二、CompressionWebpackPlugin ⭐⭐⭐

作用
在打包时对资源文件(如 JavaScript、CSS)进行压缩,生成对应的 .gz.br(Brotli 压缩)文件,服务器可以直接返回压缩后的文件,减少传输体积,提高页面加载速度。

使用场景
生产环境优化页面加载性能。

语法介绍

npm install compression-webpack-plugin --save-dev
const CompressionPlugin = require('compression-webpack-plugin');
module.exports = {plugins: [new CompressionPlugin()]
};

十三、FriendlyErrorsWebpackPlugin ⭐⭐⭐

作用
美化 Webpack 的错误信息和提示,使错误信息更易读,帮助开发者快速定位和解决问题。

使用场景
开发环境中,让开发者更方便地查看和处理打包过程中的错误。

语法介绍

npm install friendly-errors-webpack-plugin --save-dev
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
module.exports = {plugins: [new FriendlyErrorsPlugin()]
};

十四、ImageMinWebpackPlugin ⭐⭐

作用
在打包过程中对图片进行压缩,减小图片文件体积,同时保持图片质量,从而优化页面加载速度。

使用场景
项目中有大量图片资源时。

语法介绍

npm install image-min-webpack-plugin --save-dev
const ImageMinPlugin = require('image-min-webpack-plugin').default;
module.exports = {plugins: [new ImageMinPlugin({test: /\.(jpe?g|png|gif|svg)$/i})]
};

十五、IgnorePlugin ⭐⭐

作用
忽略某些特定的模块,不将其打包到最终的文件中。例如,在国际化项目中,可能会引入一些语言包,但在某些场景下只需要部分语言包,就可以使用该插件忽略其他语言包。

使用场景
避免打包不必要的模块,减小打包文件体积。

语法介绍

const webpack = require('webpack');
module.exports = {plugins: [new webpack.IgnorePlugin({resourceRegExp: /^\.\/locale$/,contextRegExp: /moment$/})]
};

十六、BannerPlugin ⭐⭐

作用
在打包后的文件头部添加版权信息、注释等内容。可以帮助开发者声明版权,方便后续维护和管理。

使用场景
为打包后的文件添加版权声明、版本信息等。

语法介绍

const webpack = require('webpack');
module.exports = {plugins: [new webpack.BannerPlugin('版权所有,禁止盗用')]
};

十七、Webpack.ProgressPlugin ⭐⭐

作用
在控制台显示 Webpack 的打包进度,让开发者了解打包的实时状态。

使用场景
大型项目打包时,方便开发者监控打包进度。

语法介绍

const webpack = require('webpack');
module.exports = {plugins: [new webpack.ProgressPlugin()]
};

十八、Webpackbar ⭐⭐⭐

作用
在控制台显示美观、简洁的打包进度条和状态信息,相比 Webpack.ProgressPlugin 有更友好的界面展示。

使用场景
开发和构建过程中,实时了解打包进度。

语法介绍

npm install webpackbar --save-dev
const WebpackBar = require('webpackbar');
module.exports = {plugins: [new WebpackBar()]
};

http://www.ppmy.cn/embedded/164740.html

相关文章

线性模型 - Softmax 回归(参数学习)

本文,我们来学习Softmax 回归的参数学习,在开始之前,我们先了解一下“损失函数”、“风险函数”和“目标函数”这三个核心概念。 一、损失函数、风险函数、目标函数 1. 损失函数(Loss Function) 定义: 损…

力扣——划分字母区间

题目链接: 链接 题目描述: 思路: 要找到每一个字母的最大位置end,也是这一段的结尾位置在这个最大位置内的字母,如果存在某个字母的最大位置 更大,就更新end为更大的如果遍历到end,就说明这一…

深研究:与Dify建立研究自动化应用

许多个人和团队面临筛选各种网页或内部文档的挑战,以全面概述一个主题。那么在这里我推荐大家使用Dify,它是一个用于LLM应用程序开发的低代码,开源平台,它通过自动化工作流程的多步搜索和有效汇总来解决此问题,仅需要最小的编码。 在本文中,我们将创建“ Deepresearch”…

AI大模型(DeepSeek)科研应用、论文写作、数据分析与AI绘图学习

【介绍】 在人工智能浪潮中,2024年12月中国公司研发的 DeepSeek 横空出世以惊艳全球的姿态,成为 AI领域不可忽视的力量!DeepSeek 完全开源,可本地部署,无使用限制,保护用户隐私。其次,其性能强大&#xff…

【matlab代码】基于故障概率加权与多模态滤波的AUV多源融合导航

多模态容错滤波仿真,以AUV为背景。订阅专栏后可查看完整代码,如有程序定制需求,可联系作者。 文章目录 创新点MATLAB仿真代码运行结果说明创新点 贝叶斯故障概率模型 融合SINS/DVL/GPS历史残差,计算实时故障概率 P fault P_{\text{fault}}

TCP fast open

TCP Fast Open 复用 Cookie 快速恢复会话,减少 1 个 RTT 的延迟 传统 TCP 三次握手需 1.5 RTT才能传输应用数据,导致 HTTP 请求延迟较高 TCP Fast Open:为了解决传统 TCP 握手中的延迟问题,通过允许在首次 SYN 握手阶段携带应用数…

C++初阶——简单实现vector

目录 1、前言 2、Vector.h 3、Test.cpp 1、前言 简单实现std::vector类模板。 相较于前面的string,vector要注意: 深拷贝,因为vector的元素可能是类类型,类类型元素可以通过赋值重载,自己实现深拷贝。 迭代器失效…

云夹平台:一站式学习与生活效率工具

在数字化时代,高效管理知识、资源和日常事务成为现代人的核心需求。云夹平台正是这样一款集多功能于一体的智能工具,致力于为用户提供便捷、个性化的服务体验。无论你是学生、职场人士还是终身学习者,云夹都能成为你的得力助手。 1. 书签管理…