带有多个输入/输出文件夹的指南针

时间:2013-05-31 15:31:53

标签: compass-sass

我想在一个命令中编译/观看Compass / SCSS文件,分布在多个文件夹中。据我所知,没有办法配置多个SCSS文件夹,再加上单独的CSS输出文件夹。

add_import_path几乎就是我所需要的,但我没有办法为每个导入路径设置sass_dir

有没有办法做到这一点?
This Quora answer说没有,但我仍然抱有希望:)。


更新:示例目录结构:

  • users / user1 / css /< - scss directory
  • users / user1 / css / generated /< - 生成的css目录
  • 用户/用户2 / CSS /
  • 用户/用户2 / CSS /生成/
  • 主题/ THEME1 / CSS /
  • 主题/ THEME1 / CSS /生成/
  • 主题/ THEME2 / CSS /
  • 主题/ THEME2 / CSS /生成/

2 个答案:

答案 0 :(得分:3)

我不知道你是否想在一个编译的CSS中编译所有这些分散的SASS文件。如果是这样的话,恐怕我不知道如何帮助你。

但是,如果您想要多个文件,一种可能的解决方案是使用Rake。

如何在一个Rake任务中包装所需的所有监视命令,然后执行此类任务以便立即运行它们。

Rake文件

namespace :stylesheets do
  desc 'Watches dynamic stylesheets for user 1 to compile changes'
  task :watch_user1 do
    puts 'Watching first set of stylesheets...'
    system 'compass watch --sass-dir users/user1/css --css-dir users/user1/css/generated -c config/compass.rb'
  end

  desc 'Watches dynamic stylesheets for user 2 to compile changes'
  task :watch_user2 do
    puts 'Watching second set of stylesheets...'
     system 'compass watch --sass-dir users/user2/css --css-dir users/user2/css/generated -c config/compass.rb'
  end
  desc 'Watches dynamic stylesheet all to compile changes'

  multitask watch_all: ['stylesheets:watch_user1', 'stylesheets:watch_user2'] do
    puts 'watching all...'
  end
end

然后你只需运行多任务rake stylesheets:watch_all,就会发出所有子任务在线程中运行命令。

这些rake任务可以大大改进,因为它们是重复的,并且通过一些约定,你甚至可以通过.yml文件配置它,但希望能给你关于你可以用Rake做什么的想法。

以下是Rakenice tutorial about writing rake tasks

的更多信息

干杯!

答案 1 :(得分:0)

您可以从命令行中拾取单个scss文件路径。

prodConfig.rb 的例子:

cid = ARGV[0] || "default"
cid = cid.sub(/\.scss$/,'').sub(/^.*\//,'')
puts "making with cid="+cid
http_path ="/fcss/" + cid + "/"
css_dir = "public/fcss/"+cid
sass_dir = "sass"
images_dir = "sass/img"
generated_images_dir="public/fcss/"+cid+"/img"
http_images_path="/fcss/"+cid+"/img/"
output_style = :expanded #: :compressed

运行“罗盘编译-c sass / prodConfig.rb sass / dynamic / xxx .scss”

现在我们在变量 cid中的prodConfig.rb中有“ xxx