私はコンパスを使ってFoundationの上に構築されたSCSSプロジェクトを持っています。その後、SASSの変数のセットを定義し、これらの変数の観点からルールの束を定義しています(私のプロジェクトは、変数の設定とimport文より多くのを持っているが、これは簡略化されている。)SCSS/Compassの動的インポート?
vars.scss:
$foo = #fafafa
$bar = 14px;
// rules using $foo and $bar
@import '_rules';
次に、コンパスを使用してvars.scssをコンパイルします。そのすべてが、そのsass変数のセットに適しています。しかし、私はまた違ったテーマに能力私のアプリをしたい、と元の変数を上書きすることができ、変数の新しいセットを定義することによって、別のテーマを生成します。
vars.scss:
$foo = #fafafa
$bar = 14px;
@import 'otherVars';
@import '_rules';
私は70以上のテーマがある場合、手動でファイルを編集することはできません。 (多くのテーマを持つことは、私のアプリのために必要です。)私が本当にしたいことは、次のような何かをできるようにすることです:
vars.scss:
$foo = #fafafa
$bar = 14px;
@import '{{otherVars}}';
@import '_rules';
そして私私はテーマごとに一度compass
を呼ぶ可能性があるため、その後、すべてのテーマをサッと取り出しやすいだろう
compass --otherVars themes/theme2
:ような何かを呼び出すことができます。
SCSSでこれを行えますか?私はそれを見て、それはそれのように見えません。
_app_prefix.scss:
$foo = #fafafa
$bar = 14px;
_app_suffix.scss:
@import '_rules';
私の現在の回避策は、接頭辞と接尾辞の中に、元vars.scssを分割することです
app.scss:
theme2.scss:
@import '_app_prefix';
// only override $foo - let the original value of $bar stand
$foo = #ebebeb;
@import '_app_suffix';
この
@import '_app_prefix';
// no overrides by default
@import '_app_suffix';
そして、特定のテーマのためにそれをオーバーライドするには、のようなファイルを作ると思いますソルバは痛いものであり、追加の定型文を紹介します。
私の次の問題は、@import 'rules_foo'
文を追加したいと考えています。これらの文も動的に構築する必要があります。だから私の全体的な想像は次のようになります:
vars。SCSS:
$foo = #fafafa
$bar = 14px;
@import '{{otherVars}}';
@import '_rules';
{{ @import 'additional_rules' for additional_rules in rules }}
そして、私が呼び出すことができます。
はcompass --otherVars themes/theme2 --rules "rules_1" "rules_2" "rules_3"
(もちろん、これはややhandwavyですが、うまくいけば、あなたのアイデアを得る。)
これを行う方法はありますか?あるいは、ハンドルバーや他のテンプレート言語に頼らざるを得ませんか?
はい、ビルド時に動的に設定することはできず、複数のインポートを行うことはできません。 –
ええ、そうだよ、そうだよ...私はあなたの質問に一層緊密に一致するように答えを変えた。希望が助けてくれる! – boxed
ええ、そのアプローチは私が現在取っているものです(私はハンドルバーを使用しています)。私はあまりハッキーではないものを望んでいた。 –