【问题标题】:How do you configure Create React App to use CSS Blocks?如何配置 Create React App 以使用 CSS 块?
【发布时间】:2018-10-06 13:19:44
【问题描述】:

CSS 块刚刚开源,我想将它合并到我的 React 应用程序中,同时仍然使用样板 CRA webpack,因为我想保留所有其他功能。

据我了解,大部分配置只是简单地使用 css-block 插件添加另一个 babel-loader。

所以不仅仅是:

{
            test: /\.(js|jsx|mjs)$/,
            include: paths.appSrc,
            loader: require.resolve('babel-loader'),
            options: {

              // This is a feature of `babel-loader` for webpack (not Babel itself).
              // It enables caching results in ./node_modules/.cache/babel-loader/
              // directory for faster rebuilds.
              cacheDirectory: true,
            },
          },

你跟着它:

{
        test: /\.[j|t]s(x?)$/,
        exclude: /node_modules/,
        use: [

          {
            loader: require.resolve('babel-loader'),
            options: {
              presets: [require.resolve("babel-preset-react-app")],
              cacheDirectory: true,
              compact: true,
            }
          },

          // Run the css-blocks plugin in its own dedicated loader because the react-app preset
          // steps on our transforms' feet. This way, we are guaranteed a clean pass before any
          // other transforms are done.
          {
            loader: require.resolve('babel-loader'),
            options: {
              plugins: [
                require("@css-blocks/jsx/dist/src/transformer/babel").makePlugin({ rewriter: CssBlockRewriter }),
              ],
              cacheDirectory: true,
              compact: true,
              parserOpts: {
                plugins: [
                  "jsx",
                  "doExpressions",
                  "objectRestSpread",
                  "decorators",
                  "classProperties",
                ]
              }
            }
          },

但是,我这辈子都无法解析任何东西。就好像它甚至不存在,我的 CSS 模块只是在类中被引用。结果最终是这样的:

<div class="/src/test.css">

而不是

<div class="a b cD">

如果有人对我应该尝试查看的地方有任何指示,我将不胜感激!

附:作为参考,我将包含指向下面文档的链接,因为它是非常新的

http://css-blocks.com/

https://github.com/linkedin/css-blocks/blob/master/packages/%40css-blocks/website/config/webpack.config.dev.js

【问题讨论】:

  • 不幸的是,这主要是我从中获得设置的地方:/由于某种原因,我的帖子中没有添加链接。如果我设法设置它,我一定会更新这篇文章。
  • 如果你把test: /\.(js|jsx|mjs)$/改成test: /\.(js|jsx|mjs|tsx)$/

标签: css reactjs webpack jsx create-react-app


【解决方案1】:

我从 Linkedin 示例 /website 中获得了示例,并且与 react-create-app scripts 一起工作正常。

我从CSS Blocksralfting/boilerplate-css-blocks 提取的休闲样板...也许这对你有帮助。

【讨论】:

  • 感谢您为我分离出来。我已经拉动并尝试运行它,我可以看到它确实生成了 css-blocks.css 文件。但是,现在组件没有在根中呈现。我可能遗漏了一些东西,因为我不使用打字稿。控制台输出错误“未定义样式”
  • @MichaelSorensen 我有同样的问题,当样式类未定义或直接在类名(className={styles.isactive()})中设置状态(类状态)时会发生这种情况。所以我创建了一个常量并将状态放入其中: const menuStyle = objstr({ [styles]: true, [style.isactive()]: });在我设置了我的类名之后。
  • 我也试过这个,我只是使用你的样板再次尝试,我仍然得到'样式未定义'。我认为我的构建无法解释“从“App.block.css”导入样式”,因为 cli 说它只是被扔掉了。警告:对块导入(样式)的杂散引用。在重写期间会删除导入,因此这可能是运行时错误。
  • 另外,我想说我非常感谢您对漂流的帮助。我认为这可能只是我们试图解决这个问题;D
  • 我将此问题标记为已回答,因为您的样板文件允许我将 CSS 编译到 CSS-blocks 文件中。我想我只是在我的机器上正确配置打字稿时遇到了问题。如果我无法弄清楚,我会为此发布另一个问题!
猜你喜欢
  • 2021-09-06
  • 2022-08-20
  • 2016-12-12
  • 2019-05-04
  • 2020-04-28
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
相关资源
最近更新 更多