【问题标题】:Rails application.css.scss not aware of other scss files in use?Rails application.css.scss 不知道其他正在使用的 scss 文件?
【发布时间】:2015-07-20 20:00:06
【问题描述】:

我正在关注 M Hartl 的 Rails 教程,并尝试添加一个 bootswatch 主题。

我已经成功地使用了教程中定义的 boostrap-sass gem,以及来自网络的 twitter-bootswatch-rails gem。

然而,在 Hartl 的教程中,除了默认引导程序之外,我们编写的所有 CSS 都在单独的 custom.css.scss 文件中。

我的 application.css.scss 文件(从 Rails 默认的 .css 重命名)包含

@import "bootstrap-sprockets";

// Import cerulean variables
@import "bootswatch/cerulean/variables";

// Then bootstrap itself
@import "bootstrap";

// And finally bootswatch style itself
@import "bootswatch/cerulean/bootswatch";
@import "custom";

这可行,但是 custom.css.scss 文件引用了 $gray-light,这是一个在引导程序中设置的变量。服务器会在css文件中的变量引用处返回错误,除非我添加

@import "boostrap-sprockets";
@import "bootstrap";

到 custom.css。

但最终结果是,我现在使用了两个巨大的 CSS 文件,我认为这没有任何原因。

我想到了

@import "custom";

是将我的 custom.css.scss 文件包含到 application.css.scss 文件中,这样它就可以放在一个地方,并且变量可以很好地工作。

另一种可行的方法是将我的整个 custom.css.scss 内容转储到 application.css.scss 中,但这违背了拥有单独文件的意义。

我做错了吗?

编辑:为了火上浇油,我从 custom.css 中删除了这两行,取而代之的是 `@import bootswatch/cerulean/variables"; 它可以工作。但是,网站本身的生成的 CSS 有该文件中没有任何内容。

【问题讨论】:

    标签: css ruby-on-rails twitter-bootstrap sass bootswatch


    【解决方案1】:

    这很可能是错误的,但我将自己的问题的答案发布如下:

    似乎 sprockets 行 //= require_self//= require_tree,即使它们默认列在清单的注释部分中,实际上也正在运行。

    这会导致每个“必需”文件被单独编译。结果,我没有得到一个 application-FINGERPRINT.css 文件,而是得到了一个应用程序、一个自定义文件和一个 static_pages 文件。我假设这是“require_tree”行。

    删除这些行后,@import "custom";线路按我的预期工作。这些文件都合并到一个application-FINGERPRINT.css 文件中,我不再需要@import custom.scss 顶部的任何内容。

    【讨论】:

      猜你喜欢
      • 2020-01-28
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      相关资源
      最近更新 更多