webpack常用的插件配置
文章类型:webpack
发布者:hp
发布时间:2023-05-19
在项目打包中,会对代码进行压缩,或者转码,今天,整理一下常用的配置
一:HtmlWebpackPlugin:用于生成html文件,并自动引入打包生成的js,css文件
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
// ...其他配置
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html', // HTML 模板文件
filename: 'index.html', // 输出的 HTML 文件名
}),
],
};
二:MiniCssExtractPlugin:将css提取为单独的文件,通过link标签引入
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
// ...其他配置
plugins: [
new MiniCssExtractPlugin({
filename: 'styles.css', // 提取的 CSS 文件名
}),
],
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
],
},
],
},
};
三:CleanWebpackPlugin:打包前清空输出目录
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
// ...其他配置
plugins: [
new CleanWebpackPlugin(),
],
};
四:CopyWebpackPlugin:将指定的文件或者目录复制到输出目录
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
// ...其他配置
plugins: [
new CopyWebpackPlugin({
patterns: [
{ from: 'src/assets', to: 'assets' }, // 复制 assets 目录到输出目录
],
}),
],
};
五:DefinePlugin:定义全局常量,
const webpack = require('webpack');
module.exports = {
// ...其他配置
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production'), // 定义环境变量
}),
],
};
6:UglifyJsPlugin:压缩js代码
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
// ...其他配置
optimization: {
minimizer: [
new UglifyJsPlugin({
// 压缩选项
uglifyOptions: {
compress: {
// ...其他压缩配置
},
},
}),
],
},
};
七:OptimizeCSSAssetsPlugin:压缩css代码
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
module.exports = {
// ...其他配置
optimization: {
minimizer: [
new OptimizeCSSAssetsPlugin(),
],
},
};
八:ProvidePlugin:自动加载模块,不需要手动引入
const webpack = require('webpack');
module.exports = {
// ...其他配置
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
}),
],
};
9:BundleAnalyzerPlugin:可视化分析打包结果
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
module.exports = {
// ...其他配置
plugins: [
new BundleAnalyzerPlugin(),
],
};
10:HotModuleReplacementPlugin:热模块替换,无需刷新页面进行模块更新
const webpack = require('webpack');
module.exports = {
// ...其他配置
devServer: {
hot: true, // 启用热模块替换
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
],
};