SASS / Compass可以将foo.scss编译为foo.min.css和foo.dbg.css吗?

时间:2012-09-13 10:48:23

标签: sass compass-sass

我想将一组.scss文件编译为不同的文件名。

在开发中,我想编译例如。 foo.scssfoo.dbg.css(未提及且有评论)。在制作中,我希望有例如。 foo.min.css(缩小)。

有没有办法告诉SASS / Compass什么用作目标扩展?命令行开关? config.rb选项?

编写首先编译然后重命名文件的脚本似乎是一个糟糕的选择,因为那时我无法有效地使用compass watch

(好吧,我可以编译到两个不同的输出目录,然后编写一个从那里复制文件的脚本。这感觉有点笨拙。)

更新:我通过编写监控代码的简化版本解决了这个问题。当某些内容发生变化时,它会触发重新编译到两个不同的输出目录,然后重命名并将文件移动到位。

3 个答案:

答案 0 :(得分:6)

我无法得到Alireza Fattahi的工作答案,因为它丢错了所以我找到了另一个适合我的例子

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

答案 1 :(得分:4)

不,不能。我在邮件列表中询问了有关RTL样式表的相同问题。 但是,您可以使用不同的“config.rb”文件运行罗盘编译。 试试compass compile -c debug.rb

UPDATE :指南针仍然不能,但Gulp可以使用Sass和Compass观察并生成多个目标css文件。见https://github.com/Snugug/gulp-css-target/

答案 2 :(得分:2)

您可以将其添加到您的配置中。

请参阅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