如何让Compass同时观看几个文件夹?

时间:2012-05-23 22:51:19

标签: ruby windows sass compass-sass

我正在使用Compass + Sass来管理/合并我的.css文件。所以我有以下文件夹结构:

Root
--Module
----css
----sass
--Module
----css
----sass
--Module
----css
----sass

这就是我想要实现的目标:在开发阶段我想将指南针指向我的根文件夹,它应该监视位于sass目录的文件中的任何更改(每个{{1} }})。其中一个.sass文件发生更改后,应生成相应的Module文件(对于已更改的.css所属的模块),并将其放入同一.sass下的css文件夹中。

有可能吗?

我猜我应该Module用于此目的,但我不确定如何正确地做到这一点。有人能指出我的解决方案,或者只描述如何做到的一般想法吗?

编辑:我在Windows环境中,所以无法使用Linux命令(我可以安装Cygwin,但我更愿意避免使用它)

由于

4 个答案:

答案 0 :(得分:4)

我的文件夹结构设置不同:

  • 资产
    • SASS
      • 模块
        • _module1.scss
        • _module2.scss
        • _module3.scss
      • screen.scss
    • 样式表
      • screen.css
    • config.rb

screen.scss:

@import "modules/module1";
@import "modules/module2";
@import "modules/module3";

config.rb:

...
css_dir = "stylesheets"
sass_dir = "sass"
...

模块名称开头的下划线表示它们不会被编译成单独的css文件。 import语句将它们组合在一起,以便所有css最终组合在screen.css中。请注意,在import语句中,您不需要下划线或.scss。

如果要维护单个css文件(这是您建议的操作),可以稍微修改此结构。删除下划线,指南针将创建单个文件。

  • 资产
    • SASS
      • 模块
        • module1.scss
        • module2.scss
        • module3.scss
      • screen.scss
    • 样式表
      • 模块
        • module1.css
        • module2.css
        • module3.css
      • screen.css
    • config.rb

在这种情况下,screen.scss中不需要任何import语句,因为每个单独的文件都需要单独包含在html文档中。

在这两种情况下,您都会在assets文件夹中运行一次“指南针监视”。请注意,您无需在stylesheets目录中创建任何内容。指南针会这样做。

答案 1 :(得分:3)

我找到的唯一解决方法是运行多个Compass实例 - 每个模块一个。我打赌通过调整Compass源代码可以有更优雅的解决方案,但不幸的是我还不熟悉Ruby ......但是。

答案 2 :(得分:2)

config.rb 文件中使用additional_import_paths或更简单的add_import_path

additional_import_paths 字符串数组系统上用于导入sass文件的其他路径。

add_import_path调用此函数可添加指南针项目的sass导入路径列表的路径。例如:add_import_path "/Users/chris/work/shared_sass"

请参阅this answer,其中包含有关如何使用add_import_path

的示例

来源: http://compass-style.org/help/documentation/configuration-reference/

答案 3 :(得分:1)

编译并观看几个独立的Sass Compass项目:https://stackoverflow.com/a/39635064/6440953