配置 purgecss-webpack-plugin 插件可以摇掉未引用的样式。

    1. const TerserPlugin = require("terser-webpack-plugin")
    2. const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    3. const CssMinimizerPlugin = require("css-minimizer-webpack-plugin")
    4. const PurgeCSSPlugin = require('purgecss-webpack-plugin')
    5. const resolveApp = require('./paths')
    6. const glob = require('glob')
    7. module.exports = {
    8. mode: 'development',
    9. devtool: false,
    10. optimization: {
    11. usedExports: true, // 标记不被使用的函数
    12. minimize: true,
    13. minimizer: [
    14. new TerserPlugin({
    15. extractComments: false,
    16. }),
    17. new CssMinimizerPlugin()
    18. ]
    19. },
    20. plugins: [
    21. new MiniCssExtractPlugin({
    22. filename: 'css/[name].css'
    23. }),
    24. new PurgeCSSPlugin({
    25. paths: glob.sync(`${resolveApp('./src')}/**/*`, { nodir: true }), // 配置要tree-shaking的文件路径。
    26. safelist: function () { // 配置不会被摇掉的标签或类名
    27. return {
    28. standard: ['body', 'html', 'ef']
    29. }
    30. }
    31. })
    32. ]
    33. }