webpack 抽离压缩 css 文件
需在 webpack 的基础配置上,做一定的修改:
1、拆分 webpack.common.js 的 css 处理,即分别在 webpack.dev.js 和 webpack.prod.js 中处理 css
2、复制之前 webpack.common.js 的 css 处理到 webpack.dev.js
js
module: {
rules: [
// ...
{
test: /\.css$/,
// loader 的执行顺序是:从后往前
loader: ['style-loader', 'css-loader', 'postcss-loader'] // 加了 postcss
},
{
test: /\.less$/,
// 增加 'less-loader' ,注意顺序
loader: ['style-loader', 'css-loader', 'less-loader']
}
]
},
3、修改 webpack.pro.js 配置
js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const TerserJSPlugin = require('terser-webpack-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
module.exports = smart(webpackCommonConf, {
// ...
module: {
rules: [
// ...
// 抽离 css
{
test: /\.css$/,
loader: [
MiniCssExtractPlugin.loader, // 注意,这里不再用 style-loader
'css-loader',
'postcss-loader',
],
},
// 抽离 less --> css
{
test: /\.less$/,
loader: [
MiniCssExtractPlugin.loader, // 注意,这里不再用 style-loader
'css-loader',
'less-loader',
'postcss-loader',
],
},
],
},
plugins: [
//...
// 抽离 css 文件
new MiniCssExtractPlugin({
filename: 'css/main.[contentHash:8].css',
}),
],
optimization: {
// 压缩 css
minimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})],
},
});