【问题标题】:Install babel-plugin-styled-components in create-react-app在 create-react-app 中安装 babel-plugin-styled-components
【发布时间】:2018-06-06 23:09:10
【问题描述】:

我正在尝试将 styled-components-babel-plugin 与 create-react-app 应用程序一起使用,以在我的 chrome 开发工具中将组件名称作为类名。但不知何故,我没有改变类名。我安装了 Babel 和网站上描述的插件,并像这样创建了我的 .babelrc:

{
  "presets": ["env"],
  "plugins": ["babel-plugin-styled-components"]
}

我尝试了很多预设(包括 react-app)和其他 babel 配置的组合,也尝试在 package.json 中进行,但我无法让它工作。问题是,我从来没有使用过 babel,几乎不知道为什么我需要它。所以我不知道,如果我在 babel 或 styled-components 方面犯了错误。有人有一个带有工作样式组件 babel 插件的示例项目吗?

【问题讨论】:

  • 你有没有将 babel-loader 添加到你的 webpack 配置中? Babel 通常会将更现代的 JS 语法转换为旧的(浏览器会使用),尽管 babel 插件做了很多其他的事情......就像这个
  • 我没有 webpack 配置。我试图让它运行,但我不知道我在做什么,我也被困在这里。我安装了一些东西,收到了一些错误消息,现在我有一个 webpack 配置,但是 webpack 运行会导致语法错误,它无法识别 jsx 语法。所有这些爵士乐真的有必要吗?毕竟,我使用 create-react-app 来启动项目。是不是有一些 webpack 在后台使用,我可以更新?
  • 嗨。我刚刚检查过,内部 create-react-app 使用了 webpack,看起来这里是关于如何使用自定义 babelrc 的讨论。希望能帮助到你。如果它不会做 imo 最好的事情是从头开始设置你的配置,所以它将是完全透明的.. 但它可能需要一段时间,因为 webpack 一开始就是一个野兽:-)
  • 顺便说一句,有大量的样板(类似于 webpack-react-babel-bla-bla-boilerplate)可以从中汲取灵感
  • 我的意思是除了安装插件之外,.babelrc 的实际内容不在.babelrc 中,而是在package.json 文件中,就像在文档中babeljs.io/docs/usage/babelrc

标签: reactjs babeljs styled-components


【解决方案1】:

在大牛的一些提示下,我尝试以另一种方式安装 babel 插件。事实证明,如果不将 babel 插件弹出并手动安装插件,就无法将 babel 插件添加到 create-react-app (https://github.com/facebookincubator/create-react-app/issues/2611)。为此,我运行了这些命令:

npm run eject
npm install --save-dev babel-plugin-styled-components

在那之后,我得到了一大堆新文件,我的 package.json 变得更大了,但还包括一个 babel 部分,如下所示:

  "babel": {
    "presets": [
      "react-app"
    ]
  }

剩下要做的就是在那里添加 babel-plugin,以便能够使用它。所以对于 styled-components 插件,我在 package.json 中的 babel 部分现在看起来像这样:

 "babel": {
    "presets": [
      "react-app"
    ],
    "plugins": ["babel-plugin-styled-components"]
  }

现在插件可以工作了,我很高兴 =) 感谢 Daniel 为我指明了正确的方向!

【讨论】:

    【解决方案2】:

    Create react app v2 支持 babel 宏。样式组件宏有一个NPM package。只需添加包以创建 React 应用即可。

    yarn add styled-components.macro --dev
    

    执行此操作不需要弹出 CRA。

    【讨论】:

    • 当时还没有,但感谢您的提醒!
    • Alex Mckay 的回答帮助了我:也从 styled-components/macro 导入
    【解决方案3】:

    有一种更简单的方法可以实现这一点,并且不需要弹出或安装任何其他软件包:

    而不是像这样导入样式组件:

    import styled from 'styled-components';
    

    像这样导入:

    import styled from 'styled-components/macro';
    

    如果这对您不起作用,您可能需要更新样式组件或做出反应。更多信息请访问styled-components documentation

    【讨论】:

    猜你喜欢
    • 2018-09-10
    • 2022-07-29
    • 2018-10-13
    • 2019-10-29
    • 2018-10-14
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 2017-09-11
    相关资源
    最近更新 更多