在 webpack 配置中将模块设置为 false 会破坏所有 css

Setting modules to false in webpack config breaks all css

我有以下 webpack 配置并且一切正常:

    module: {
        rules: [
            {
                test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/,
                loader: 'url-loader',
                options: {
                    limit: 10000
                }
            },
            {
                test: /\.tsx?$/,
                exclude: /node_modules/,
                loader: "babel-loader",
                options: {
                    plugins: [
                        require('babel-plugin-transform-async-to-promises')
                    ]
                }
            },
            {
                test: /\.js$/,
                use: [ "source-map-loader" ],
                enforce: "pre"
            },
            {
                test: /\.(scss|css)$/,
                use: [ { loader:'style-loader'}, {loader : 'css-loader', options: {
                    modules: true,
                    sourceMap: IS_DEV,
                }}, {loader: 'sass-loader', options : {sourceMap: IS_DEV}} ]
            },
        ]
    },

但是,当我尝试将 modules 设置为 false 时,

            {
                test: /\.(scss|css)$/,
                use: [ { loader:'style-loader'}, {loader : 'css-loader', options: {
                    modules: false,
                    sourceMap: IS_DEV,
                }}, {loader: 'sass-loader', options : {sourceMap: IS_DEV}} ]
            },

我的所有项目 css 都停止工作了。如何在将 modules 设置为 false 时修复我的 CSS?

我认为这与您在组件中应用 css classes 是否启用 Css-modules 的方式有关。
如果您不使用 CSS 模块,则在组件中指定文字 CSS class 名称,而当启用 CSS 模块时,您将转而指定导入的 CSS class webpack生成的变量。
综上所述,您可能希望根据在组件文件中应用 css classes 的方式进行更改。

我通过将 modules:false 替换为

解决了这个问题
modules: {
    localIdentName: IS_DEV ? '[local]' : '[hash:base64:5]'
},

这使得当 运行 处于开发模式(非生产模式)时,css 类名是可见的并且继续像在生产模式中一样工作。有关详细信息,请查看 https://github.com/webpack-contrib/css-loader#modules