Sass/Compassで保存した際に非圧縮と圧縮したCSSファイルを出力する

Sass/Compassでは保存の際にminify圧縮するか圧縮しないかを選択できますが、両方出力したい場合、次のような方法で出力できます。

config.rbに以下のコードを追加します。

output_style = :expanded
  
on_stylesheet_saved do |filename|
	if File.exists?(filename)
		minifyFile = filename.gsub('.css', '.min.css')
		FileUtils.cp filename, minifyFile
		file = File.read minifyFile
		colon = ':'
		semicolon = ';'
		comma = ','
		open_brace = ' {'
		close_brace = '}'
		file.gsub!(/\n/,' ')
		file.gsub!(/\/\*.*?\*\//m,'')
		file.gsub!(/\s*:\s*/,colon)
		file.gsub!(/\s*;\s*/,semicolon)
		file.gsub!(/\s*,\s*/,comma)
		file.gsub!(/\s*\{\s*/,open_brace)
		file.gsub!(/\s*\}\s*/,close_brace)
		file.gsub!(/\s\s+/,' ')
		File.open(minifyFile, 'w+') do |f|
			f << file
		end
	end
end

そうすると、たとえばstyle.sassをコンパイルすると非圧縮のファイルがstyle.cssとして、圧縮されたファイルがstyle.min.cssとして出力されます。
(Rubyがよくわからずに書いているのでツッコミ大歓迎!!)

参考:Minimizing CSS Files with Ruby | BenEngebreth.org

関連エントリー

Google ChromeでCSSがSassの何行目に記述されているか確認する方法
Compassでスプライト画象を高速に書き出す方法
CompassでCSS Spriteする際にスプライト画像間のマージンを取る方法
CompassでデータURI スキーム
CompassでCSSスプライト

スポンサードリンク

«CSS3のkeyframe AnimationをFPSベースで設定する「fpsAnimation.js」 | メイン | クロスブラウザを意識した「transitionend 」»