Can SASS/Compass compile foo.scss to foo.min.css and foo.dbg.css?

依然范特西╮ 提交于 2019-12-06 19:41:08

问题


I want to compile a set of .scss files to different filenames.

In development, I want to compile eg. foo.scss to foo.dbg.css (unminified and with comments). In production, I want to have eg. foo.min.css (minified).

Is there a way to tell SASS/Compass what to use as the target extension? A command-line switch? A config.rb option?

Writing a script that first compiles and then renames files seems like a bad option, because then I can't use compass watch efficiently.

(Well, I could compile to two different output directories and then write a script that copies the files from there. That feels a bit clumsy.)

UPDATE: I worked around the problem by writing a simplified version of the watch code. When something changes, it triggers a recompile to two different output directories, then renames and moves the files to place.


回答1:


No it can't. I asked the same question in the mailing lists about RTL stylesheets. However, you can run compass compile using different 'config.rb' files. Try compass compile -c debug.rb.

UPDATE: Compass still can't, but Gulp can watch and generate several target css files using Sass and Compass. See https://github.com/Snugug/gulp-css-target/




回答2:


I couldn't get Alireza Fattahi's answer to work because it threw errors so I found another example which works for me

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:


You can add this to your config.

Please see 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


来源:https://stackoverflow.com/questions/12404551/can-sass-compass-compile-foo-scss-to-foo-min-css-and-foo-dbg-css

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!