webpack的css-loader、react-css-modules中生成的hash不一样
webpack中像实现css Module的功能。
安装babel-plugin-react-css-modules后根据官方进行配置:插件的github
const config = WebpackMerge.merge(WebpackBase, {
module: {
rules: [
{
test: [/\.s[ac]ss$/i, /\.css$/i],
use: [
// "style-loader",
MiniCssExtractPlugin.loader,
{
loader: "css-loader",
options: {
importLoaders: 1,
modules: {
localIdentName: "[path][name]__[local]--[sha256:hash:base64:5]",
},
},
},
"sass-loader",
],
},
{
test: /\.(jsx|js)$/,
loader: "babel-loader",
options: {
cacheDirectory: true,
plugins: [
[
"react-css-modules",
{
context: path.join(__dirname, "../"),
exclude: "node_modules",
generateScopedName:
"[path][name]__[local]--[sha256:hash:base64:5]",
},
],
],
},
exclude: [path.join(__dirname, "../node_modules")],
},
],
},
});
由于生成的hash不一致。className无法对应到相应的样式。
这里应该如何配置才能使得 hash值相等
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
原因:
去搜索了下,应该是最新版的css-loader6.2.0使用了新的hash算法,所以导致两者的生成的hash不一致
解决:
在webpack.config.js中使用"generic-names": "^3.0.0", 生成类名,在babel.config.js中使用生成类名,也就是通过generic-names让两者达成一致。
webpack.config.js 配置如下:
babel.config.js 配置如下:
新版的 css-loader 生成算法变了,简单的解决办法是回退到 css-loader@3.6.0 版本