1

问题

其他一切都相同,我的最终页面的 CSS 结果不同。prod 版本缺少正确的 flexbox 对齐,如下面的比较所示:

开发

开发页面

产品

产品页面

该问题是由 PurifyCSSPlugin 引起的。我不知道如何配置它仍然清理css的正确部分,保留我真正需要的部分?

任何帮助,将不胜感激。完整的代码可在此处获得。

研究至今

2017 年 8 月 21 日更新:

在生产版本中,以下类缺少 css

  • 字幕

    标题:不(.is-spaced)+ .subtitle { 边距顶部:-1.5rem; }

  • @media screen and (min-width: 769px), print .columns:not(.is-desktop) { display: flex; }

设置

我使用 webpack-3 和bulma来制作网页。我定义了两个脚本任务来构建我的应用程序 1. 在开发中和 2. 用于生产。

"dev": "webpack-dev-server --progress --colors",
"prod": "npm run clean && NODE_ENV=prod webpack -p",

在我的 webpack 配置中,我根据 NODE_ENV 变量在两种配置之间切换以进行 css 处理。配置如下所示:

const cssConfigEnvironments = {
    'dev': ['style-loader', 'css-loader?sourceMap', 'sass-loader'],
    'prod': ExtractTextPlugin.extract({
        fallback: 'style-loader',
        use: ['css-loader', 'sass-loader']
    })
}

此外,我禁用了 ExtractTextPlugin 进行开发。

    new ExtractTextPlugin({                                                                 // Builds .css, see https://github.com/webpack-contrib/extract-text-webpack-plugin
        filename: '[name].css',
        allChunks: true,
        disable: !envIsProd
    }),

控制台内显示的唯一值得注意的信息是以下弃用警告:

(node:2275) DeprecationWarning: Chunk.modules is deprecated. Use Chunk.getNumberOfModules/mapModules/forEachModule/containsModule instead.
4

1 回答 1

1

问题确实来自 PurifyCSSPlugin,有一个问题已经解决。

作为快速修复,您必须将not标签列入白名单:

    new PurifyCSSPlugin({
        // Give paths to parse for rules. These should be absolute!
        paths: glob.sync(path.join(__dirname, 'src/*.html')),
        minimize: envIsProd,
        purifyOptions: {
          info: true,
          whitelist: [ '*:not*' ]
        }
    })
于 2017-08-26T14:14:10.067 回答