【发布时间】:2017-12-13 08:51:45
【问题描述】:
使用带有 extract-text-webpack-plugin 的 css-loader 中的 css modules 选项,Webpack 2 构建在生产模式下无法正常工作。
正确生成的类是在 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 正确提取的问题?
【问题讨论】:
-
如果我能再次投票给你,我会的。感谢您跟进您的回答。
标签: reactjs webpack-2 css-loader extract-text-plugin extracttextwebpackplugin