问题
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