【问题标题】:Best Way To Import Sass/CSS File Into Reactjs Component?将 Sass/CSS 文件导入 Reactjs 组件的最佳方法?
【发布时间】:2018-06-07 16:32:38
【问题描述】:

我在我的 reactjs 中使用 webpack,并且我确实设置了 sass 加载程序,但我想知道我是否以正确的方式导入文件(它有效,但我只是想知道这样做是否是最佳实践)

import hamburger from "../../node_modules/hamburgers/dist/hamburgers.css";
import bulma from "../../node_modules/bulma/bulma";


 module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader"
        }
      },
      {
        test: /\.s?css$/,
        use: [
          {
            loader: "style-loader" // creates style nodes from JS strings
          },
          {
            loader: "css-loader" // translates CSS into CommonJS
          },
          {
            loader: "sass-loader" // compiles Sass to CSS
          }
        ]
      }
    ]
  },

编辑

当我尝试在其中导入 sass 文件时出现错误

import  "../../node_modules/bulma/bulma";
import "../../node_modules/bulma-steps-component/bulma-steps";

它们都有 .sass 的扩展名

 Error: Can't resolve '../../node_modules/bulma-steps-component/bulma-steps'

我需要再次检查吗?

编辑 2

我尝试添加此检查

  test: /(\.css|\.scss|\.sass)$/,
    use: [
      {
        loader: "style-loader" // creates style nodes from JS strings
      },
      {
        loader: "css-loader" // translates CSS into CommonJS
      },
      {
        loader: "sass-loader" // compiles Sass to CSS
      }
    ]

并做到了(我需要 .sass 扩展名才能使其工作)

导入“../../node_modules/bulma/bulma.sass”; 导入“../../node_modules/bulma-steps-component/bulma-steps.sass”;

但现在我明白了

ERROR in ./node_modules/bulma-steps-component/bulma-steps.sass (./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js!./node_modules/bulma-steps-component/bulma-steps.sass)
Module build failed:
$steps-default-color: $grey-lighter !default
$steps-completed-color: $primary !default
$steps-active-color: $primary !default
$steps-horizontal-min-width: 10em !default
$steps-vertical-min-height: 4em !default
$steps-marker-size: 2 !default
$steps-divider-size: .4em !default
$steps-gap-size: .3rem !default
$steps-hollow-border-size: .3em !default
$steps-thin-divider-size: 1px !default
$steps-thin-marker-size: .8em !default

它一直在运行(几乎好像它向我展示了文件中的所有代码)但错误似乎是Undefined variable: "$grey-lighter".

【问题讨论】:

  • 你在使用css modules吗?这样你就可以使用像 <p className={hamburger.bio}>lorem</p> 这样的类名,而在 hamburger.css 里面你会像 .bio{color: #333;}
  • 我正在使用 css 加载器。在我的模块区。
  • 应该可以直接导入然后不用hamburger from
  • 另外,如果 import bulma from "../../node_modules/bulma/bulma" 是一个 css 文件并且它正在工作,似乎你的 webpack 配置设置为解析 .css 扩展名,所以你可以从汉堡包中省略它。
  • @1252748 - 很酷,我会尝试一下,虽然我在处理 sass 文件时遇到了问题,我认为这是因为我可能需要添加一个“测试”?

标签: reactjs webpack sass


【解决方案1】:

当我开始使用 react-js 时,我遇到了同样的问题,但后来我发现了这个样板。这是与 redux 和路由器反应的最佳设置。

看看这个:https://github.com/coryhouse/react-slingshot

如果你不想使用这个,那么你可以参考这个来解决你的问题。

【讨论】:

  • 我已经开始了我的项目,所以不能仅仅将它作为我的基础。我也没有使用 redux。从中挑选一些东西可能会很好。
  • 是的,看看这可能会有所帮助。我在很多项目中都使用过。
【解决方案2】:

webpack 错误说它无法解析您的 CSS 文件意味着您指定的路径不正确。当您导入 sass 或 css 时,我会导入带有扩展名的文件,就像在 css 工作的初始示例中一样。这也将有助于其他接触您的代码的人知道您正在导入的不是另一个模块,而是样式。

【讨论】:

  • 是的,我认为这也是最好的方法。我确实为 .sass 尝试过,但仍然出现错误。
  • 相对于项目根目录,您正在执行导入 (import "../../node_modules/bulma-steps-component/bulma-steps.sass") 的文件位于何处?
  • 它位于同一个项目中。使用 npm 包时会生成 node_modules。这是根级别。
  • 我的意思是您正在导入的文件位于何处。您的文件位于根目录中吗?我知道您的node_modules 文件夹位于项目根目录中。
猜你喜欢
  • 2020-02-13
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 2018-10-14
  • 2023-01-19
  • 2021-05-03
  • 2019-04-16
  • 2021-09-08
相关资源
最近更新 更多