首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-css-modules (babel)和css-loader (webpack)是如何协同工作的?

react-css-modules (babel)和css-loader (webpack)是如何协同工作的?
EN

Stack Overflow用户
提问于 2021-04-20 13:56:11
回答 1查看 400关注 0票数 1

当一起使用webpack和巴别塔时,为了使用React CSS模块,需要同时配置这两个模块。例如:

webpack.config.js需要这样的规则:

代码语言:javascript
复制
{
  // Translates CSS into CommonJS modules
  loader: 'css-loader',
  options: {
    modules: {
      mode: "local",
      localIdentName: CSS_CLASS_NAME_PATTERN,
    },
  sourceMap: true
}

babel.config.js需要一个这样的插件:

代码语言:javascript
复制
[
  'react-css-modules',
  {
    generateScopedName: CSS_CLASS_NAME_PATTERN,
    filetypes: {
      '.scss': {
        syntax: 'postcss-scss',
        plugins: ['postcss-nested']
      }
    },
  }
]

为什么需要在两个地方配置CSS模块?这两者是如何协同工作的?也就是说,按什么顺序发生了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-04-24 18:47:45

css-loader做自己的事情:在CSS中进行类名转换,在JS代码中用原始名称和生成名称之间的映射替换CSS导入。

babel-plugin-react-css-modules独立工作,它将react组件的styleName属性替换为具有正确生成的名称的className。为了做到这一点,它独立于css-loader计算类名映射,这就是为什么它需要与css-loader匹配的单独配置,这也是为什么在被创建者抛弃几年后,它与最新的css-loader (css-loader改变了内部类名生成逻辑)的兼容性问题。

不知羞耻的自我宣传:我维护了一个解决了最新css-loader版本兼容性问题的up-to-date fork of babel-plugin-react-css-modules

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67173238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档