2016-04-14 18 views
2

私は自分自身の静的なサイトジェネレータをRubyで作成しています。私は自分のコードにSassコンパイラを追加しています。Sass :: Engine.newにより@importのSass :: SyntaxErrorが発生する

def compile_sass 
    # system 'sass _sass/styles.scss styles.css' 
    options = { 
    syntax: :scss, 
    style: :compressed 
    } 
    render = Sass::Engine.new(File.read('_sass/styles.scss'), options).render 
    File.write('style.css', render) 
end 

しかし、styles.scssファイルに@importがあると問題が発生します。

(sass):1: File to import not found or unreadable: variables. (Sass::SyntaxError) 

を引き起こし両方SCSSファイルが_sassフォルダ、ルートにメインスクリプトに配置され、そしてcompile_sassは_generatorに位置しています。しかし、システムコールのコメントを外して残りのコメントを書き込むと、すべてが期待通りに機能します。

body { 
    background-color: blue; 
} 

_variables.scss

styles.scss

@import 'variables'; 

html { 
    background-color: red; 
} 

私は、ほとんどすべてを試みhow to import stuffをチェックし、looked at the documentationが、私は私が見つける助けとなる何かを見つけることができません問題を定義します。

+0

はなぜ期待します[ '@ import'](http://sass-lang.com/ documentation/file.SASS_REFERENCE.html#import)を使用して、インポートされたファイル名に_underscore_を追加しますか? – mudasobwa

+0

@mudasobwaスタイルシートをインポートするためにアンダースコアは必要ありません。 –

+0

@mudasobwa彼らのドキュメント[そこに置くべきだと言います](しかし、それはうまくいきませんまたはアンダースコアなし)。 – rojcyk

答えて

1

は、私はこのようなサス:: Engineのにすべての_sass/*.scssファイルをロードする必要がありましたが判明:

Sass::Engine::DEFAULT_OPTIONS[:load_paths].tap do |load_paths| 
    load_paths << '_sass' 
end 
関連する問題