2013-07-11 11 views
20

私はでこれを行う方法はありますだから私はサスSassファイルのインポート文で変数を使用できますか?以内に

$basePath:"../../some_crazy_project_path_to_repeat/less/"; 
@import "${basePath}less.scss"; 
// Syntax error: File to import not found or unreadable: ${basePath}less.scss. 

@import "#{basePath}less.scss"; 
// Syntax error: File to import not found or unreadable: #{basePath}less.scss. 

で同じことを実行しようとしました。この

@basePath:"../../some_crazy_project_path_to_repeat/less/"; 
@import "@{basePath}less.less"; 

ような何かを行うことができますサス?

+6

[文字列補間](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#interpolation_)は '#{} 'を使用します – steveax

+0

@steveax補間は本当にクールな機能ですが、このような状況でどのように役立つのか、私の頭を抱くことはありませんか? – Shanimal

+0

'@import"#{basePath} less.scss "'を試しましたか? –

答えて

9

SASSでのインポートに条件付きのものを使用することはできません。

プロジェクトから拡張子Compassを作成することを検討してください。

+4

Andreyは正しいです、[Sass '@ import' docs](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#import):"輸入には#{}の補間が含まれていますが、変数に基づいてSassファイルを動的にインポートすることはできません;補間はCSSインポートのためだけです。したがって、url()インポートでのみ機能します。 – steveax

6

既にインポートパスで変数を使用することはできません。何ですか doは検索するディレクトリを指定するのに-Iまたは--load-pathオプションを使用しています。

sass --watch sass/:css/ --load-path ../../path/to/library/ 

のは、あなたがこのようなディレクトリ構造を持っているとしましょう:

themes 
    hotdog 
     _variables.scss 
    classic 
     _variables.scss 
styles.scss 

あなたstyles.scssが提供するロード・パス(複数可)に関連しているインポートパスを持っている必要があります。

// note the import here doesn't contain themes, hotdog, or classic 
@import "variables"; 

@debug $foo; 

あなたのコマンドは次のようになります:

# hotdog 
sass styles.scss hotdog.css --load-path ./themes/hotdog/ 
# classic 
sass styles.scss classic.css --load-path ./themes/classic/ 

詳細についてはSass options documentationをご覧ください。

関連する問題