Comassでsass・scssをコンパイルした時の改行コードをLFに設定する方法について記します。
Contents
使用しているバージョン
ruby 3.2.0
Compass 1.0.3
Sass 3.4.25
使用していたconfig.rb
上記バージョンのモジュールと下記config.rbを使用していて、改行コードがCRLFで出力されておりました。
(おそらくWindows PCを使用していたことに起因しているのかなと思っております。)
Encoding.default_external = 'UTF-8'
css_dir = "css"
sass_dir = "scss"
cache = false
line_comments = false
output_style = :expanded
改行コードをLFにする設定
基本的にはconfig.rbにsass_options = {:unix_newlines => true} をするだけで、LFでコンパイルされるようです。
Encoding.default_external = 'UTF-8'
css_dir = "css"
sass_dir = "scss"
cache = false
line_comments = false
output_style = :expanded
sass_options = {:unix_newlines => true} #追記
ただし注意点が二つあるので以下に記します。
注意点①:SassのバージョンによってはLFにならない?
試せてはいないのですが下記のGitHub上でのやりとりによると、Sassのバージョンが3.1.19より古いと、うまくいかないとの事ですので注意が必要です。
Compass does not compile with Unix line-endings on Windows #949
注意点②:autoprefixer-railsを入れているとうまくいかない模様
ベンダープレフィックスを自動でつけるためにconfig.rbの下の方に下記のような記述でautoprefixer-railsを入れていたところ、うまくLFになってくれませんでした。(これらをコメントアウトするとLFになるという状態でした。)
require 'autoprefixer-rails'
require 'csso'
on_stylesheet_saved do |file|
css = File.read(file)
File.open(file, 'w') do |io|
io << AutoprefixerRails.process(css)
end
end
autoprefixer-railsを使っていてもLFで出力する
下記のようにFile.openの第二引数を“w”から“wb”に変更することで、autoprefixer-railsを使用していても、LFで出力することができました。“wb”は 『LFはそのままLFとして書き込込む』という設定のようです。
require 'autoprefixer-rails'
require 'csso'
on_stylesheet_saved do |file|
css = File.read(file)
File.open(file, 'wb') do |io| #修正
io << AutoprefixerRails.process(css)
end
end
以上、Compassの出力結果の改行コードをLFに設定する方法でした。
参考になれば幸いです!
コメント