问题

其他所有条件都一样,我的最终页面的CSS结果有所不同。产品版本缺少正确的flexbox对齐方式,如以下比较所示:

开发人员

html - 如何阻止Webpack-3的PurifyCSSPlugin清除过多?-LMLPHP

产品

html - 如何阻止Webpack-3的PurifyCSSPlugin清除过多?-LMLPHP

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

任何帮助,将不胜感激。完整的代码可用here

到目前为止的研究

更新2017-08-21:

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


字幕

title:not(.is-spaced)+ .subtitle {
    上边距:-1.5rem;
}


@media屏幕和(最小宽度:769px),打印
.columns:not(.is-desktop){
    显示:flex;
}


设定

我将webpack-3与bulma一起使用以创建webpage。我定义了两个脚本任务来构建我的应用程序: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.

最佳答案

问题确实来自PurifyCSSPlugin,它可以通过an issue already open解决。

为了快速解决,您必须将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*' ]
        }
    })

09-16 08:25