SCSS导入相对于导入的样式表?

时间:2013-12-10 16:54:35

标签: ruby-on-rails sass zurb-foundation

我在我的Rails应用中安装了foundation-rails并运行rails g foundation:install。正确安装了项目特定的文件(主要是foundation_and_overrides.scss)。宝石就在那里,安装没有问题,依赖(SASS,指南针)也在那里。但我得到了:

Error compiling CSS asset
SASS::SyntaxError: File to import not found or unreadable: global.

来自:

/Users/local/.rvm/gems/ruby-2.0.0-p353/gems/foundation-rails-5.0.2.0/vendor/assets/stylesheets/foundation/components/_accordion.scss:1

经过调查,我发现_accordion.scss @import foundation.scss位于主stylesheets/文件中,位于@import 'foundation/components/accordion' 的两个目录中:

_global.scss

同时,“缺失”文件@import位于同一目录中。如果我然后将_accordion.scss中的@import 'global'代码从@import 'foundation/components/accordion'更改为_global.scss,则会清除并继续执行下一个错误(此处有很多子导入)

很明显发生的事情是 SASS相对于顶部样式表foundation.scss 正在寻找_accordion.scss,而不是相对于要求它的导入样式表({{ 1}})。

我无法想象这是Foundation / Foundation-Rails中的一个错误 - 这个gem对任何人都不起作用 - 而且我不想自己修改gem的内容。

所以我的问题是:我是否必须更改一些SASS设置以允许@import相对于导入的样式表?我不想修改这个gem以使其工作(我想允许将来更新gem)。

修改

明确gem vendor/assets/stylesheets目录中的目录结构:

foundation.scss
foundation/components/_accordion.scss
foundation/components/_global.scss

编辑2

您实际上可以在github

上看到gem的代码和结构

编辑3

以为我已经解决了这个问题,但我没有:从@import改为=require摆脱了错误,并包含了Foundation的CSS。但是require不会导入Foundation提供的SCSS功能 - 变量,mixins。没有办法以这种方式更改全局值,或者从主样式表或其他@import ed样式表中检索它们或mixins。

1 个答案:

答案 0 :(得分:1)

看起来像基金会thinks这是最好的解决方案:

手动将Foundation的样式表子目录(每个子目录)添加到:load_paths主要块中的SASS application.rb

config.sass.load_paths += [
  "#{Gem.loaded_specs['foundation-rails'].full_gem_path}/vendor/assets/stylesheets/foundation/components",
  "#{Gem.loaded_specs['foundation-rails'].full_gem_path}/vendor/assets/stylesheets/foundation/"
]