Компас Источник в нескольких каталогах - PullRequest
2 голосов
/ 14 февраля 2012

Успешно ли вы собрали SASS в нескольких каталогах? Вы можете настроить компас для рекурсивного просмотра каталога?

Я прочитал документацию по add_import_path, но я был бы очень признателен за некоторый пример кода, так как я (я вполне уверен) никогда не писал строки кода ruby.

Причина, по которой я спрашиваю, состоит в том, что у меня есть несколько проектов, которые используют несколько стандартных scss. Я бы хотел, чтобы изменения в общем scss касались всех проектов.

спасибо.

Ответы [ 2 ]

2 голосов
/ 22 сентября 2016

Вот мое решение, которое поддерживает пакетную компиляцию / просмотр нескольких независимых проектов 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"
2 голосов
/ 23 мая 2012

Допустим, у вас есть следующая структура директрой:

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";
...