そうです、RubyからCompassを使用する方法に関する包括的なドキュメントは実際にはありません。これは残念なことですが、ドキュメントのような小さな詳細が私たちを止めさせないようにしましょう!
最初の試み
同じことをしようとしていたとき、私はCompassソースをざっと見て、この小さなRubyスクリプトをまとめることができました。一見すると、それはトリックを行うように見えます:
require 'compass'
require 'sass/plugin'
compiler = Compass::Compiler.new(
# Compass working directory
'.',
# Input directory
'styles/scss',
# Output directory
'styles/css',
# Compass options
{ :style => :compressed }
)
compiler.compile('test.scss', 'test.css')
しかし、どうやらCompassには、コンパイラコンストラクター(SASSload_path
がその1つ)を直接呼び出すときに自動的に含まれない一連のデフォルト構成オプションがあります。これにより、次のようなCompass関数とミックスインをインポートしようとしたときにエラーが発生する可能性があります。
エラー:インポートするファイルが見つからないか、読み取れません:compass / css3
コンパス<1.0.0(別名「古い方法」)
これらのデフォルトをオーバーライドせずにコンパイラを呼び出す方法は次のとおりです。
require 'compass'
Compass.add_configuration(
{
:project_path => '.',
:sass_path => 'styles/scss',
:css_path => 'styles/css'
},
'custom' # A name for the configuration, can be anything you want
)
Compass.compiler.compile('test.scss', 'test.css')
ただし、Compassバージョン1.0.0の時点で、Compass.compiler
が廃止され、Compass.sass_compiler
...になりました。
コンパス>=1.0.0(別名「新しい方法」)
新しいAPIの使用方法を見つけてくれた@philippに感謝します。このスニペットを再度更新して、次の機能を使用できるようにします。Compass.sass_compiler
require 'compass'
require 'compass/sass_compiler'
Compass.add_configuration(
{
:project_path => '.',
:sass_path => 'styles/scss',
:css_path => 'styles/css'
},
'custom' # A name for the configuration, can be anything you want
)
compiler = Compass.sass_compiler({
:only_sass_files => [
'styles/scss/test.scss'
]
})
compiler.compile!