Compassの出力結果の改行コードをLFに設定する


Comassでsass・scssをコンパイルした時の改行コードをLFに設定する方法について記します。




使用しているバージョン

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.rbsass_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}    #追記


ただし注意点が二つあるので以下に記します。





connaiconnai

注意点①: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に設定する方法でした。
参考になれば幸いです!

コメント

タイトルとURLをコピーしました