optimize-css-assets-webpack-plugin css代码压缩
接下来就是设置 optimization.minimizer ,这里需要注意的就是,此时设置optimization.minimizer会覆盖webpack默认提供的规则,比如JS代码就不会再去压缩了
const MiniCssExtractPlugin = require('mini-css-extract-plugin');const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');const UglifyJsPlugin = require('uglifyjs-webpack-plugin');const {merge} = require('webpack-merge')const commomConfig = require('./webpack.common')const prodConfig = {mode: 'production',devtool: 'cheap-module-source-map',optimization: {minimizer: [new UglifyJsPlugin({sourceMap: true,parallel: true, // 启用多线程并行运行提高编译速度}),new OptimizeCSSAssetsPlugin({}),]},plugins: [new MiniCssExtractPlugin({// 类似 webpackOptions.output里面的配置 可以忽略filename: '[name].[hash].css',chunkFilename: '[id].[hash].css'})],module: {rules: [{test: /\.(sa|sc|c)ss$/,use: [{loader: MiniCssExtractPlugin.loader,options: {// 这里可以指定一个 publicPath// 默认使用 webpackOptions.output中的publicPathcss// 举个例子,后台支持把css代码块放入cdnpublicPath: "https://cdn.example.com/css/"},},'css-loader','postcss-loader','sass-loader',],}]},}module.exports = merge(commomConfig, prodConfig)
uglifyjs-webpack-plugin代码压缩
这个插件解决的问题,就是当你需要去optimization.minimizer中设置,这样子会覆盖webpack基本配置,原本JS代码压缩的功能就会被覆盖
const MiniCssExtractPlugin = require('mini-css-extract-plugin');const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');const UglifyJsPlugin = require('uglifyjs-webpack-plugin')const {merge} = require('webpack-merge')const commonConfig = require('./webpack.common')const prodConfig = {mode: 'production',devtool: 'cheap-module-source-map',optimization: {minimizer: [new UglifyJsPlugin({sourceMap: true,parallel: true, // 启用多线程并行运行提高编译速度}),new OptimizeCSSAssetsPlugin({}),]},plugins: [new MiniCssExtractPlugin({// 类似 webpackOptions.output里面的配置 可以忽略filename: '[name].[hash].css',chunkFilename: '[id].[hash].css'})],module: {rules: [{test: /\.(sa|sc|c)ss$/,use: [{loader: MiniCssExtractPlugin.loader,options: {// 这里可以指定一个 publicPath// 默认使用 webpackOptions.output中的publicPathcss// 举个例子,后台支持把css代码块放入cdnpublicPath: "https://cdn.example.com/css/"},},'css-loader','postcss-loader','sass-loader',],}]},}module.exports = merge(commonConfig, prodConfig)
