11

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

在开发中,我想编译例如。foo.scssfoo.dbg.css(未缩小并带有评论)。在生产中,我想拥有例如。foo.min.css(缩小)。

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

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

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

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

4

3 回答 3

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
于 2014-08-18T13:42:50.617 回答
4

不,它不能。我在关于 RTL 样式表的邮件列表中提出了同样的问题。但是,您可以使用不同的“config.rb”文件运行 compass compile。试试compass compile -c debug.rb

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

于 2012-09-13T18:05:01.613 回答
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
于 2014-01-08T06:23:38.273 回答