Вот мое решение, которое поддерживает пакетную компиляцию / просмотр нескольких независимых проектов 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/
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 }
Обратите внимание, что нам нужно создать отдельный поток для каждого компаса (так как они блокируют процессы). sleep(1)
необходимо, потому что Compass::Exec::SubCommandUI
на самом деле не является потокобезопасным и может запускать несколько часов на одном модуле вместо одного на каждом. В этом случае попробуйте увеличить значение sleep
.
Создайте аналогичный файл config.rb
во всех модулях. Возможно, вам придется использовать compass init
, чтобы получить первый config.rb
, который распознает компас.
config.rb
http_path = "/"
css_dir = "css"
sass_dir = "sass"