10

Compassを使用して単一のSCSSファイルをコンパイルしたいRubyでスクリプトを作成しています。私はこれをできるだけ単純にしようとしていますが、config.rbファイルの使用は避けたいと思います。ストレートRubyを介していくつかの設定を行い、Compassに単一のSCSSファイルをCSSファイルにコンパイルするように指示したいだけです。

私はこれが可能でなければならないことを知っていますが、それを行う方法についてのまともなドキュメントを見つけることができませんでした。どんな助けでもいただければ幸いです。

4

2 に答える 2

10

そうです、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!
于 2012-10-30T12:55:21.017 に答える
0

コマンドラインからcompileメソッドを呼び出すだけです。そこですべてのオプションを指定できます。すべてのオプションを表示するには、を実行しますcompass help compile

以下に例を示します。コンパイルされたcssファイルをtest.scssファイルと同じディレクトリに出力します。

file_name = "absolute/path/to/test.scss"
system "compass compile #{file_name} --sass-dir . --css-dir ."

必要な数のオプションを指定して補間することができます。また、rubyでコマンドを実行するためにこれをチェックしてください:

Rubyスクリプト内でのコマンドラインコマンドの実行

于 2012-10-30T09:46:08.840 に答える