webpack has a rich plugin interface. Most of the features within webpack itself use this plugin interface. This makes webpack flexible.
| Name | Description | 
|---|---|
BannerPlugin |  Add a banner to the top of each generated chunk | 
CommonsChunkPlugin |  Extract common modules shared between chunks | 
CompressionWebpackPlugin |  Prepare compressed versions of assets to serve them with Content-Encoding | 
ContextReplacementPlugin |  Override the inferred context of a require expression |  
CopyWebpackPlugin |  Copies individual files or entire directories to the build directory | 
DefinePlugin |  Allow global constants configured at compile time | 
DllPlugin |  Split bundles in order to drastically improve build time | 
EnvironmentPlugin |  Shorthand for using the DefinePlugin on process.env keys |  
EslintWebpackPlugin |  A ESLint plugin for webpack | 
HotModuleReplacementPlugin |  Enable Hot Module Replacement (HMR) | 
HtmlWebpackPlugin |  Easily create HTML files to serve your bundles | 
IgnorePlugin |  Exclude certain modules from bundles | 
LimitChunkCountPlugin |  Set min/max limits for chunking to better control chunking | 
MinChunkSizePlugin |  Keep chunk size above the specified limit | 
MiniCssExtractPlugin |  creates a CSS file per JS file which requires CSS | 
NoEmitOnErrorsPlugin |  Skip the emitting phase when there are compilation errors | 
NormalModuleReplacementPlugin |  Replace resource(s) that matches a regexp | 
NpmInstallWebpackPlugin |  Auto-install missing dependencies during development | 
ProgressPlugin |  Report compilation progress | 
ProvidePlugin |  Use modules without having to use import/require | 
SourceMapDevToolPlugin |  Enables a more fine grained control of source maps | 
EvalSourceMapDevToolPlugin |  Enables a more fine grained control of eval source maps | 
TerserPlugin |  Uses Terser to minify the JS in your project | 
For more third-party plugins, see the list from awesome-webpack.