您是否成功在多个目录中编译SASS?你能设置罗盘来递归观看目录吗?
我已经阅读了关于add_import_path的文档,但我非常感谢一些示例代码,因为我(我相当肯定)从未编写过一行ruby代码。
我问的原因是我有几个项目共享一些标准scss。我希望对共享scss进行更改以级联到所有项目。
感谢。
答案 0 :(得分:2)
假设您有以下目录结构:
project
|-- config.rb
+-- apps
|-- main.scss
|-- app1
+-- appst1.scss
|-- app2
+-- appst2.scss
+-- app3
+-- appst3.scss
然后调整config.rb
:
sass_dir = "apps"
add_import_path "apps"
...
并在你的main.scss中包含其他scss文件:
@import "app1/appst1";
@import "app2/appst2";
@import "app3/appst3";
答案 1 :(得分:2)
这是我的解决方案,支持批量罗盘编译/观看多个独立的SASS项目,基于两个Ruby脚本。
Ruby文件的文件夹结构:
Root
--compile.rb
--watch.rb
--Module1
----config.rb
----css
----sass
--Module2
----config.rb
----css
----sass
--Module3
----config.rb
----css
----sass
使用多个参数运行compile.rb
和watch.rb
,这些参数表示包含config.rb
文件的模块文件夹的路径。
即。 :ruby compile.rb Module1/ Module2/ Module3/
require 'rubygems'
require 'compass'
require 'compass/exec'
ARGV.each do |arg|
Compass::Exec::SubCommandUI.new(["compile", arg, "--force"]).run!
end
即。 :ruby watch.rb Module1/ Module2/ Module3/
require 'rubygems'
require 'compass'
require 'compass/exec'
threads = []
ARGV.each do |arg|
threads << Thread.new {
Compass::Exec::SubCommandUI.new(["watch", arg, "--force"]).run!
}
sleep(1)
end
threads.each { |thr| thr.join }
请注意,我们需要为每个罗盘手表创建一个单独的线程(因为它们是阻塞进程)。 sleep(1)
是必要的,因为Compass::Exec::SubCommandUI
实际上不是线程安全的,并且可能在同一模块上运行多个监视,而不是每个监视一个。如果发生这种情况,请尝试增加sleep
值。
在所有模块中创建类似的config.rb
文件。您可能必须使用compass init
来获取指南针识别的第一个config.rb
。
http_path = "/"
css_dir = "css"
sass_dir = "sass"