Компас Источник в нескольких каталогах
Успешно ли вы собрали SASS в нескольких каталогах? Можете ли вы настроить компас для рекурсивного просмотра каталога?
Я прочитал документацию по add_import_path, но я был бы очень признателен за некоторый пример кода, так как я (я вполне уверен) никогда не писал строки кода ruby.
Причина, по которой я спрашиваю, состоит в том, что у меня есть несколько проектов, которые используют некоторые стандартные scss Я бы хотел, чтобы изменения в общем scss касались всех проектов.
Благодарю.
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";
Вот мое решение, которое поддерживает пакетную компиляцию / просмотр нескольких независимых проектов 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"