Webpack 2 构建在生产模式下使用 css-loader 中的 css modules 选项和 extract-text-webpack-plugin 无法正常工作。
正确生成的类是在 html 元素上创建的,这意味着 css-loader 正在按预期工作,但是从 extract-text-webpack-plugin 提取的 css 文件缺少 css 标识符。
我正在使用一种方法来同时实现全局 css 和 css 模块,如此处所述: https://github.com/css-modules/css-modules/pull/65 和此处:https : //github.com/kitze /custom-react-scripts/issues/29。
我对以 .css 结尾的文件和以 .cssm.css 结尾的文件使用不同的加载器测试,表明它们应该使用模块加载。
配置的相关部分:
const extractTextPlugin = new ExtractTextPlugin({filename: '[name].[id].[contenthash].css', allChunks: true});
return {
module: {
rules: [
{
test: /\.cssm.(css|less)$/,
loader: extractTextPlugin.extract({
fallbackLoader: 'style-loader',
loader: [
{
loader: 'css-loader',
query: {
importLoaders: 1,
modules: true,
localIdentName: '[name]_[local]_[hash:base64:5]'
}
},
{
loader: 'postcss-loader',
query: {
ident: 'postcss',
plugins: function() {
return [
require('autoprefixer')
];
}
}
},
{
loader: 'less-loader'
}
]
})
},
{
test: /\.(css|less)$/,
include: paths,
loader: extractTextPlugin.extract({
fallbackLoader: 'style-loader',
loader: [
{
loader: 'css-loader',
query: {
importLoaders: 1
}
},
{
loader: 'postcss-loader',
query: {
ident: 'postcss',
plugins: function() {
return [
require('autoprefixer')
];
}
}
},
{
loader: 'less-loader'
}
]
})
}
]
},
plugins: [
extractTextPlugin
]
};
我已经尝试过建议的解决方案,例如使用 webpack 1 风格的编写加载器,但这并没有帮助。
我正在使用 webpack 版本:2.6.1 和 extract-text-webpack-plugin:2.1.2。
我还尝试了其他版本,但似乎也没有帮助。
我的全局 css 文件工作正常,只有导入的 .cssm.css 文件在与 extract-text-webpack-plugin 一起使用时被忽略。
如何解决 css 模块文件无法与其他全局 css 正确提取的问题?