Может ли SASS/Compass скомпилировать foo.scss для foo.min.css и foo.dbg.css?

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

В разработке я хочу скомпилировать, например. foo.scss до foo.dbg.css (unminified и с комментариями). В производстве я хочу иметь, например. foo.min.css (minified).

Есть ли способ сказать SASS/Compass, что использовать в качестве целевого расширения? Переключатель командной строки? A config.rb вариант?

Запись script, которая сначала компилирует, а затем переименовывает файлы, кажется неудачной, потому что тогда я не могу эффективно использовать compass watch.

(Ну, я мог бы скомпилировать два разных выходных каталога, а затем написать script, который копирует файлы оттуда. Это немного неуклюже.)

ОБНОВЛЕНИЕ: Я работал над проблемой, написав упрощенную версию кода часов. Когда что-то меняется, он запускает перекомпиляцию в два разных каталога вывода, затем переименовывает и перемещает файлы в место.

Ответ 1

Нет, не может. Я задал тот же вопрос в списках рассылки о таблицах стилей RTL. Тем не менее, вы можете запускать компас, используя разные файлы config.rb. Попробуйте compass compile -c debug.rb.

UPDATE. Компас все еще не может, но Gulp может смотреть и генерировать несколько целевых файлов css с помощью Sass и Compass. См. https://github.com/Snugug/gulp-css-target/

Ответ 2

Я не мог заставить Алирезу Фаттахи ответить на работу, потому что он бросил ошибки, поэтому я нашел другой пример, который работает для меня

http://h3r2on.com/2013/05/17/rename-css-on-compile.html

require "fileutils"

on_stylesheet_saved do |file|
  if File.exists?(file)
    filename = File.basename(file, File.extname(file))
    File.rename(file, css_dir + "/" + filename + ".min" + File.extname(file))
  end
end

Ответ 3

Вы можете добавить это в свою конфигурацию.

См. https://github.com/sbspk/Prepros/issues/38

require 'fileutils'

on_stylesheet_saved do |file|

  if file.match('.min') == nil

    require 'compass'

    Compass.add_configuration(
        {
            :project_path => File.dirname(File.dirname(file)),
            :sass_dir => File.basename(File.dirname(file)),
            :css_path => File.basename(File.dirname(file)),
            :output_style => :compressed
        },
        'alwaysmin' # A name for the configuration, can be anything you want
    )
    Compass.compiler.compile(File.dirname(file) + "/" + File.basename(file, '.css') + '.scss', File.dirname(file) + "/" + File.basename(file, '.css') + ".min.css")

  end

end