2012-02-14 10 views
2

複数のディレクトリでSASSをコンパイルできましたか?再帰的にディレクトリを見るためにコンパスを設定できますか?複数のディレクトリでコンパスソース

私はadd_import_pathに関するドキュメントを読んだことがありますが、私は(かなり確かですが)ルビコードの行を書かなかったので、いくつかのサンプルコードを本当に感謝します。

私が尋ねる理由は、いくつかの標準的なscssを共有するいくつかのプロジェクトがあるということです。すべてのプロジェクトにカスケードする共有scssへの変更を希望します。

ありがとうございました。

答えて

2

あなたは、以下のdirectroy構造を持っているとしましょう:

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"; 
+0

感謝。質問は、共通のscssファイルを持つ複数の(無関係の)プロジェクトがあるときにはより多くなります。 '' ' project1に | - reset.scss + - project1.scss のProject2 | - reset.scss + - のProject2。scss project3 | - reset.scss + - project3.scss '' ' –

+2

多分これはあなたの[回答](http://stackoverflow.com/a/9387422/286432)です。 –

+0

私は上記の[リンク](http://stackoverflow.com/questions/9383716/loading-global-sass-files-in-multiple-compass-projects)に新しい回答を掲載しました。それが役に立てば幸い。 – elussich

2

ここで私のソリューションは、バッチコンパスのコンパイル/複数のindependeの時計をサポートしています2つのRubyスクリプトをベースにしたSASSプロジェクトです。 Rubyファイルと

フォルダ構造:

Root 
--compile.rb 
--watch.rb 
--Module1 
----config.rb 
----css 
----sass 
--Module2 
----config.rb 
----css 
----sass 
--Module3 
----config.rb 
----css 
----sass 

実行compile.rbwatch.rbconfig.rbファイルを含むあなたのモジュールフォルダへのパスを表すいくつかの引数を持ちます。

I.e. :ruby compile.rb Module1/ Module2/ Module3/

compile.rb

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/

watch.rb

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 } 

注意してください。 Compass::Exec::SubCommandUIは実際にスレッドセーフではなく、同じモジュールで複数の時計を1つずつ実行する代わりに、複数の時計を実行する可能性があるため、sleep(1)が必要です。その場合は、sleepの値を増やしてみてください。

同様のconfig.rbファイルをすべてのモジュールで作成します。コンパスが認識する最初のconfig.rbを取得するには、compass initを使用する必要があります。応答レトため

config.rb

http_path = "/" 
css_dir = "css" 
sass_dir = "sass" 
関連する問題