前端开发那些事儿

webpack 如何配置 CSS抽取 和 打包压缩

2021-03-05  本文已影响0人  为光pig

前言

我们一般打包,webpack 会自动把 css 打包到 js 文件中去。css 抽取 就是是把 css 抽取出来,生成 css 文件单独打包,然后在进行压缩。
接下来,我详细介绍下 css 是如何抽取 和 压缩的!

CSS 抽取

安装:npm install mini-css-extract-plugin -D
在 webpack.config.js 中的 plugin 配置
引入:
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

// 插件
plugins:[
    new HtmlWebpackPlugin({
        // 默许指定 模板的路径 否则会篡改网页 title
        template: resolve('public/index.html')
    }),
    // 打包时删除之前已生成的文件,可配置多个路径
    new CleanWebpakPlugin(['dist']),
    // 抽取公共 CSS
    new MiniCssExtractPlugin({
        filename: 'css/[name].css'
    })
]

注意:在没有安装 mini-css-extract-plugin 之前,是用 css-loader 把 css 样式打包到 js 文件中去,用 style-loader 把 js 中的文件放到 style 标签里去。
但用了 mini-css-extract-plugin 只后就用不到 style-loaser 了

之前配置
{
    test: /\.css$/,  
    // loader 处理方式 是 从下往上 从右往左
    use: ['style-loader', 'css-loader']
}
改成,不改这的话,不会生效
{
    test: /\.css$/,  
    // loader 处理方式 是 从下往上 从右往左
    use: [MiniCssExtractPlugin.loader, 'css-loader']
}

CSS 压缩

  安装:npm install optimize-css-assets-webpack-plugin -D
  注意:这是一个优化配置,需要在和 `entry 、output、modulehe 和 plugins` 等平级的 optimization 中;
引入:
const OptimizeCSSAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin');
配置:
// 插件
plugins:[
    new HtmlWebpackPlugin({
        // 默许指定 模板的路径 否则会篡改网页 title
        template: resolve('public/index.html')
    }),
    new CleanWebpakPlugin(['dist']),
    new MiniCssExtractPlugin({
        filename: 'css/[name].css'
    })
],
// 优化配置 
optimization:{
    // 在这里配置 CSS 压缩
    minimizer: [new OptimizeCSSAssetsWebpackPlugin()]
}
上一篇下一篇

猜你喜欢

热点阅读