webpack 4+正确配置purgecss css代码treeshaking

Posted 飞翔的熊blabla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack 4+正确配置purgecss css代码treeshaking相关的知识,希望对你有一定的参考价值。

1.需要使用@next,否则报错,prugecss原来的不支持webpack4

npm i purgecss-webpack-plugin@next -D

2.purgeCss依赖于MiniCssExtractPlugin

所以也要安装相关依赖

npm i -D mini-css-extract-plugin@1.6.0

为什么指定了这个版本没用最新版本,因为我们发现最新版本有兼容问题如下

TypeError: Invalid value used in weak set
    at WeakSet.add (native)

之后是webpack配置,下面是webpack-chain配置方式

const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const PurgecssPlugin = require('purgecss-webpack-plugin');

config
            .plugin('MiniCssExtractPlugin')
            .use(MiniCssExtractPlugin, [
              
                filename: 'css/[name].[contenthash:8].css',
                chunkFilename: 'css/[name].[contenthash:8].css'
              
            ])

          config
            .plugin('PurgecssWebpackPlugin')
            .use(PurgecssPlugin, [
              
                paths: glob.sync([
                  path.join(__dirname, './src/index.html'),
                  path.join(__dirname, './src/**/*.vue'),
                  path.join(__dirname, './src/**/*.js')
                ])
              
            ])

效果如下

光是element-ui体积之前是500kb 优化后css体积50kb

性能和之前比 TTI快了0.6s, FCP快了0.2s, LCP快了0.1秒

但是UI变形

解决方式

使用白名单放开element-ui css

 config
            .plugin('PurgecssWebpackPlugin')
            .use(PurgecssPlugin, [
              
                paths: glob.sync([
                  // path.join(__dirname, './src/**/*'),
                  path.join(__dirname, './src/index.html'),
                  path.join(__dirname, './src/**/*.vue'),
                  path.join(__dirname, './src/**/*.js')
                ]),
                // safelist: [/^el-/],
                // whitelist: ["html", "body"],
                whitelistPatterns: [/el-.*/],
                // whitelistPatternsChildren: [/^token/, /^pre/, /^code/]
              
            ])

最后效果

之前是500kb 优化后css体积380kb 优化了100kb

文档

https://purgecss.com/plugins/webpack.html#usage

以上是关于webpack 4+正确配置purgecss css代码treeshaking的主要内容,如果未能解决你的问题,请参考以下文章

javascript Webpack:Tailwind CSS + PurgeCSS示例

javascript Webpack:Tailwind CSS + PurgeCSS示例

javascript Webpack:Tailwind CSS + PurgeCSS示例

javascript Webpack:Tailwind CSS + PurgeCSS示例

如何将 PurgeCSS 与 Angular CLI 项目集成

javascript 用于AdonisJS的Laravel Mix + TailwindCSS + PurgeCSS资产管道配置