指南针,添加导入路径

时间:2012-10-26 12:51:09

标签: css sass compass-sass

要在多个目录中编译.scss文件,我们需要使用“add_import_path”(http://compass-style.org/help/tutorials/configuration-reference/),但我不知道如何。

我试图添加

additional_import_paths
add_import_path "_themes"
add_import_path = "_themes"
additional_import_paths = "_themes"

在我的config.rb中,但没有运气,Compass仅从 sass_dir =“_modules”编译


更新:是的,这一行

add_import_path "_themes"

不会给我们“找不到文件夹”错误,但指南针仍然没有在其中编译.scss

我做错了什么?

2 个答案:

答案 0 :(得分:7)

这里有一个公认的答案,但我认为它没有回答这个问题,但提供了另一种解决方案。这绝对没问题,而且我并没有试图侮辱任何人,但是{1}这里没有关于add_import_path的信息及其对你的影响。

如果有人曾在Magento工作过,那么您就熟悉了主题和模板文件的后备结构。为了设置使用相同默认外观的多个商店,我们需要包含一个回退结构,允许对预定义的层次结构进行更改。所以检查dis config.rb文件

myThemeA - config.rb

require "font-awesome-sass"
http_path = "/skin/frontend/rwd/myThemeA/"
add_import_path "../../../rwd/default/scss"
css_dir = "../css"
sass_dir = "../scss"
images_dir = "../images"
javascripts_dir = "../js"
fonts_dir = "../css/fonts"
relative_assets = true

output_style = :expanded
environment = :production
sourcemap = true

myThemeB - config.rb

require "font-awesome-sass"
http_path = "/skin/frontend/rwd/myThemeB/"
add_import_path "../../../rwd/default/scss"
additional_import_paths = ["../../../rwd/myThemeA/scss"]
css_dir = "../css"
sass_dir = "../scss"
images_dir = "../images"
javascripts_dir = "../js"
fonts_dir = "../../myThemeA/css/fonts"
relative_assets = true

output_style = :expanded
environment = :production
sourcemap = true

所以这里的想法是我们有三个皮肤,我们可以使用导入路径只覆盖某些文件,而不是在每个皮肤中包含每个文件。这也意味着,当我们想要进行全局变更时,取决于我们所做的改变,我们不会做出3次改变 - 只有它依赖于链中的位置。

因此...

默认是所有皮肤的基础

myThemeA 是皮肤本身并使用默认值

myThemeB 使用myThemeA作为默认值,而myThemeA使用默认值作为默认值。

这项工作的原因是add_import_pathadditional_import_paths的展示位置。从本质上讲,它使用首先定义的add_import_path作为默认值,然后后续additional_import_paths数组将覆盖add_import_path中的内容,但是附加内容中没有包含任何内容,将在默认情况下寻找。

希望这对任何寻找有关导入路径的更多信息的人都有意义。

答案 1 :(得分:1)

要编译多个.scss文件,您应该使用@import "filename";将“子”文件导入“父”SASS文件。

例如,如果您有main.scss,则可能需要从名为child.scss的子样式表中导入更多CSS,如下所示:

@import "_modules/child";

据我所知,add_import_path所做的只是允许您从其他目录导入文件。因此,您也可以@import

_themes/

请参阅this thread